Docker 编写、管理环境
Docker compose, manage environments
我有以下 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
变成了 production.yml
之类的。然后您可以 运行 docker-compose -f development -f production up
进行生产,而 docker-compose -f development
进行开发。您可能还想查看 docker-compose.
的 extends
functionality
试试我的方法吧。
This is 我在 docker 上 运行 的 Django 项目示例。
- 首先在 docker-compose.yml 中您必须定义两个容器。
第一个是
web
它意味着生产然后第二个是 devweb
它
发展的手段。
- 如果您使用 docker 文件,您可以创建单独的 docker 文件
(Dockerfile : for production, and Dockerfile-dev 用于开发)。
通过使用 docker-compose 命令,您可以 运行。
例如:
docker-compose -p $(PROJECT) up -d web
用于生产
docker-compose -p $(PROJECT) up --no-deps -d devweb
为
发展
无论如何,我使用Makefile来管理所有docker-compose的命令,这让我很轻松。我只需要 运行 make command name
来执行命令。
希望这个回答对您有所帮助。
我有以下 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
变成了 production.yml
之类的。然后您可以 运行 docker-compose -f development -f production up
进行生产,而 docker-compose -f development
进行开发。您可能还想查看 docker-compose.
extends
functionality
试试我的方法吧。
This is 我在 docker 上 运行 的 Django 项目示例。
- 首先在 docker-compose.yml 中您必须定义两个容器。
第一个是
web
它意味着生产然后第二个是devweb
它 发展的手段。 - 如果您使用 docker 文件,您可以创建单独的 docker 文件 (Dockerfile : for production, and Dockerfile-dev 用于开发)。
通过使用 docker-compose 命令,您可以 运行。 例如:
docker-compose -p $(PROJECT) up -d web
用于生产docker-compose -p $(PROJECT) up --no-deps -d devweb
为 发展
无论如何,我使用Makefile来管理所有docker-compose的命令,这让我很轻松。我只需要 运行 make command name
来执行命令。
希望这个回答对您有所帮助。