使用两个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 – 在这里你看到一个开发/生产文件为例