我有以下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 文件中干净地管理环境有什么建议吗?
最佳答案
通常的方法是使用 Compose 覆盖文件。默认情况下,docker-compose 在启动时读取两个文件: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
变为development.yml
> 或者什么的。然后,您可以运行 docker-compose -fdevelopment -f production up 进行生产,仅运行 docker-compose -fdevelopment 进行开发。您可能还想查看 extends
functionality docker-compose 的。
关于Docker 组合、管理环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37640852/