我正在尝试找出如何设置我当前的docker compose yaml文件来运行我的dev env。我是docker的新手,但我得到了一个使用它的项目。
version: '3'
services:
database:
image: someinfo:9.5
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
volumes:
- db-data:/var/lib/postgresql/data
backend:
build: .
command: bash /somepath/server/django_devserver.sh
volumes:
- .:/volumeinfo
links:
- database
ports:
- "8000:8000"
environment:
DJANGO_SETTINGS_MODULE: projectname.settings.production
SCHEMA: https
DB_HOST: database
PYTHONUNBUFFERED: 1
volumes:
db-data:
目前,这是在我的开发环境中运行Django生产设置。我想保留它,但我也想告诉docker在开发服务器中运行我的开发设置。我怎样才能做到这一点?我是否会使用dev vars创建一个名为dev-backend的新容器?
然后我会运行docker-compose up dev-backend
或类似的东西吗?原谅我的无知,今天是我与Docker的第一天。
答案 0 :(得分:1)
最简单的方法是为您的开发环境创建单独的撰写文件。一个好的开始是复制此文件并更改适当的设置(例如DJANGO_SETTINGS_MODULE
)。
默认情况下,docker-compose
会搜索名为docker-compose.yml
的文件并使用它来调出容器;但您可以使用-f
传递自定义文件名。
[~]$ docker-compose -f dev.yml up
dev.yml
是开发设置文件的名称。它可以被称为任何东西,只要它适当的YAML。
最好从文档中为compose file reference添加书签,因为这里有一个非常全面的指令和选项列表。
答案 1 :(得分:1)
我建议您尝试Docker Compose configuration overriding的正式鼓励方法:
# your_config.dev.yml version: '3' services: database: environment: - POSTGRES_USER=dev_user - POSTGRES_PASSWORD=dev_pass backend: environment: DJANGO_SETTINGS_MODULE: projectname.settings.development # ...
这就是您使用一套用于开发的覆盖生产环境配置的方式:
docker-compose -f your_config.yml -f your_config.dev.yml (build|up|...)
N.B。这假设your_config.yml
是问题中提供的那个。