django - 防止在 docker-compose 中跳过

标签 django docker docker-compose

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

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.

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

如何让 db 图像先构建?

最佳答案

您可以在 Detached mode 中启动您的 db 容器在构建 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

关于django - 防止在 docker-compose 中跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406013/

相关文章:

docker - 在 docker-compose 中使用两个主机 IP

docker - 在 docker-compose 的 makefile 中导出当前用户 ID

azure - 运行多容器应用程序时,适用于容器的 Azure Web App 是否支持 ssh 访问?

python - 在 ReactJS 上使用 django Web 应用程序后端和移动应用程序

python - 部署多个 Django 项目或应用程序?

docker - 适用于无身份的 ASP.NET Core WebAPI 的 Sustainsys SAML2 示例

命名卷的 docker-compose.yml 语法

python - Django max_upload_size 被忽略

django - 使用 Django 的密码重置通知用户电子邮件无效

Docker从容器访问localhost端口