2016-09-22 122 views
1

我知道那裏有多個實例(實際上只有幾個),並且我研究了一些並嘗試將它們應用於我的案例,但後來當我嘗試提起集裝箱時(docker-compose up)我每次都會得到或多或少的相同錯誤。碼頭集裝箱內的提升帆

我的文件夾結構是:

sails-project 
--app 
----api 
----config 
----node_modules 
----.sailsrc 
----app.js 
----package.json 

--docker-compose.yml 
--Dockerfile 

docker-compose.yml文件:

sails: 
    build: . 
    ports: 
    - "8001:80" 
    links: 
    - postgres 
    volumes: 
    - ./app:/app 
    environment: 
    - NODE_ENV=development 
    command: node app 

postgres: 
    image: postgres:latest 
    ports: 
     - "8002:5432" 

而且Dockerfile

FROM node:0.12.3 

RUN mkdir /app 

WORKDIR /app 

# the dependencies are already installed in the local copy of the project, so 
# they will be copied to the container 
ADD app /app 

CMD ["/app/app.js", "--no-daemon"] 

RUN cd /app; npm i 

我試着也有RUN npm i -g sails而不是(在Dockerfile)和command:sails lift,但我是g ETTING:

enter image description here

當然,我試過Dockerfile的不同配置,然後用不同的命令(node appsails liftnpm start,等...),而是不斷用同樣的錯誤結束了。有任何想法嗎?

回答

1

通過使用command: node app您覆蓋了commandCMD ["/app/app.js", "--no-daemon"],因此它不起作用。 WORKDIR /appwill create an app folder因此您不必RUN mkdir /app。最重要的是你必須在CMD ["/app/app.js", "--no-daemon"]之前RUN cd /app; npm i。在啓動應用程序之前,必須先安裝NPM依賴項。

+0

忘了說我已經在項目的本地副本中安裝了依賴項,所以'ADD app/app'會複製依賴關係。現在我將使用此信息更新OP。 :) – Milkncookiez

+0

@Milkncookiez當然。但是在vanilla sails項目中,node_modules中的sails文件夾是符號鏈接。在你的dockerfile中,只有符號鏈接將被複制,而不是整個文件夾。測試此安裝將在本地項目文件夾中進行。 –

+0

我做了,它現在正在運行,我不知道爲什麼以及如何。 'Dockerfile'中我沒有真正改變。 – Milkncookiez