开发环境的Docker设置?

时间:2018-06-14 21:08:35

标签: python django docker docker-compose

我正在尝试找出如何设置我当前的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的第一天。

2 个答案:

答案 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是问题中提供的那个。