平,
我使用泊坞窗文件为我的生产代码创建了一个图片,但不包含源代码:
FROM node:latest
MAINTAINER Fatima Alves
COPY ./dist /mya-app/dist/
COPY ./s3options.json /mya-app/
COPY ./node_modules /mya-app/node_modules
WORKDIR /mya-app
ENTRYPOINT ["node", "./dist/"]
现在我想在我的机器中创建一个图像,dev
图像。在这种情况下,必须包含文件夹src
,并且ENTRYPOINT将为["node", "./dist"]
。
是否可以将其包含在我的Dockerfile中,或者我是否需要两个文件,一个用于dev,另一个用于prod?
提前致谢!
答案 0 :(得分:2)
上面的答案并不完全正确。
你应该用这种方式
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up
而docker-compose.yml
是生产者。这里的要点是,只在.dev文件中添加覆盖,例如,添加卷共享以挂载代码,添加一些ENV变量,如RAILS_ENV=development
,公开一些端口进行开发。
您不想做的是复制生产文件,因为您希望尽可能地坚持生产。所以最后,文件被合并,而右边的文件具有更高的权重/覆盖左文件中的值。
如果设置是端口/卷等散列映射,则设置是深度合并的,因此只需添加。
如果您使用的是MAC,则可以查看http://docker-sync.io - docker-sync-stack start
获得快速批量共享以及开箱即用的-dev文件支持 - 请参阅https://github.com/EugenMayer/docker-sync-boilerplate/tree/master/rsync - 在这里您可以看到dev / production文件作为示例
答案 1 :(得分:1)
据我所知,你需要2个Dockerfiles。在我的环境中,我使用Dockerfile和Dockerfile.dev
docker build -f dockerfile.dev -t code:dev .
或
docker built -t code:prod .