在Docker容器内提升风帆

时间:2016-09-22 13:31:08

标签: docker sails.js docker-compose dockerfile

我知道那里有多个例子(实际上只有几个),我已经调查了一些并尝试将它们应用到我的案例中,但是当我尝试提起容器时(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,但我得到了:

enter image description here

当然,我尝试了Dockerfile的不同配置,然后使用不同的命令(node appsails liftnpm start等等),但不断结束有同样的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用command: node app,您将覆盖command CMD ["/app/app.js", "--no-daemon"],因此无效。 WORKDIR /app will create an app folder所以您不必RUN mkdir /app。最重要的是,RUN cd /app; npm i之前必须CMD ["/app/app.js", "--no-daemon"]。必须在启动应用程序之前安装NPM依赖项。