我有以下docker-compose.yml文件在本地工作:
mongodb:
image: mongo
command: "--smallfiles --logpath=/dev/null"
web:
build: .
command: npm run dev
volumes:
- .:/myapp
ports:
- "3001:3000"
links:
- mongodb
environment:
PORT: 3000
NODE_ENV: 'development'
seed:
build: ./seed
links:
- mongodb部署到服务器时,需要更改docker-compose.yml文件中的两项内容:
web:
command: npm start
environment:
NODE_ENV: 'production'我想在每次部署之后编辑文件并不是最舒服的方法。对于如何干净地管理docker-compose.yml文件中的环境,有什么建议吗?
发布于 2016-06-05 18:47:05
通常的方法是使用复合重写文件。默认情况下,docker在启动时读取两个文件,docker-compose.yml和docker-compose.override.yml。您可以将任何想要重写的内容放在后者中。所以:
# docker-compose.yml
mongodb:
image: mongo
command: "--smallfiles --logpath=/dev/null"
web:
build: .
command: npm run dev
volumes:
- .:/myapp
ports:
- "3001:3000"
links:
- mongodb
environment:
PORT: 3000
NODE_ENV: 'development'
seed:
build: ./seed
links:
- mongodb另外:
# docker-compose.override.yml
web:
command: npm start
environment:
NODE_ENV: 'production'然后可以运行docker-compose up并获得生产设置。如果您只想要开发,那么可以运行docker-compose -f docker-compose.yml up。
一个更好的方法是以相关的方式命名您的撰写文件。所以,docker-compose.yml变成了development.yml,docker-compose.override.yml变成了production.yml或者什么的。然后,您可以为生产运行docker-compose -f development -f production up,只运行用于开发的docker-compose -f development。您可能还想了解一下extends 功能 of docker-compose。
发布于 2016-06-06 00:21:16
试着用我的方式。
这是是我在docker上运行的django项目的一个例子。
web,它意味着生产,其次是devweb,它意味着发展。这样您就可以使用命令来运行了。例如:
docker-compose -p $(PROJECT) up -d webdocker-compose -p $(PROJECT) up --no-deps -d devweb促进发展不管怎么说,我使用Makefile来管理所有的坞-撰写的命令,这使我非常容易。我只需要运行make command name来执行命令。
愿这个答案对你有帮助。
https://stackoverflow.com/questions/37640852
复制相似问题