使用两个docker文件 – dev和prod

喜,

我正在使用docker文件为我的生产代码创build一个图像,该图像不包含源代码:

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/"] 

现在我想创build一个图像在我的机器上工作,一个dev图像。 在这种情况下,必须包含文件夹src ,并且ENTRYPOINT将是["node", "./dist"]

是否有可能包括在我的Dockerfile中,或者我需要两个文件,一个用于开发和其他产品?

提前致谢!

据我所知你需要2个Dockerfiles。 在我的环境中,我使用Dockerfile和Dockerfile.dev

 docker build -f dockerfile.dev -t code:dev . 

要么

 docker built -t code:prod . 

上面的答案不完全正确。

你应该这样使用它

docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

docker-compose.yml是生产版本。 这里的要点是,只需在.dev文件中添加覆盖,例如添加卷共享来加载代码,添加一些ENVvariables,如RAILS_ENV=development ,展示一些用于开发的端口。

你不想做的是复制生产文件,因为你想尽可能的贴近生产。 所以最后,文件被合并,而右边的文件在左边的文件中具有更高的权重/覆盖值。

如果该设置是像ports / volumes这样的散列映射,则这些设置将被深度合并,因此只需添加即可。

如果你使用的是MAC,你可以看看http://docker-sync.io – 通过docker-sync-stack start你可以获得快速的卷共享,并且支持开箱即用的-dev文件 – 请参阅https:/ /github.com/EugenMayer/docker-sync-boilerplate/tree/master/rsync – 在这里你看到一个开发/生产文件为例