防止在docker-compose中跳过

时间:2016-07-15 22:49:27

标签: django docker docker-compose

我有一个带有后端的Django网络应用程序的docker-compose.yml。它看起来像这样:

version: '2'

services:
  db:
    image: # special image
    ports:
      - "1433:1433"
    environment:
      PASSWORD: "*********"

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    depends_on:
      - db

当我运行sudo docker-compose build时,第一行输出显示

db uses an image, skipping. 
Building web.

我需要在db之前构建web图片。

如何首先构建db图像?

1 个答案:

答案 0 :(得分:5)

在构建db之前,您可以在Detached mode中启动web容器:

$ docker-compose up -d db
$ docker-compose build web

尽管如此,seems like an anti-pattern。我建议您尽可能保持web的构建过程通用,而是使用环境变量或command arguments来完成此任务。

例如,如果您需要将相同的配置值传递给webdb,则可以使用an env_file完成此操作:

# db_credentials.env
USER="django"
PASSWORD="********"
DATABASE="django_db"

docker-compose.yml文件中:

services:
  db:
    # ...
    env_file: db_credentials.env

  web:
    # ...
    env_file: db_credentials.env