Hei,
我正在使用一个docker文件为我的生产代码创建一个图像,其中不包括源代码:
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?
提前感谢!
上面的答案并不完全正确。
你应该这样使用
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up
而CCD_ 5是生产型。这里的重点是,只在.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文件作为示例
据我所知,您需要2个Dockerfiles。在我的环境中,我使用Dockerfile和Dockerfile.dev
docker build -f dockerfile.dev -t code:dev .
或
docker built -t code:prod .