我有一个 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来完成这个。
例如,如果您需要将相同的配置值传递给 web
和 db
,您可以使用 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/