使用两个docker文件 - dev和prod

时间:2016-09-02 02:28:12

标签: node.js docker dockerfile

平,

我使用泊坞窗文件为我的生产代码创建了一个图片,但不包含源代码:

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?

提前致谢!

2 个答案:

答案 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 .