【发布时间】:2016-07-15 22:49:27
【问题描述】:
我有一个 docker-compose.yml 用于带有后端的 Django Web 应用程序。它看起来像这样:
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 图像首先被构建?
【问题讨论】:
-
假设您的意思是数据库映像的“运行”,而不是“构建”?您认为这里的行为与正在发生的情况有何不同?
-
@JHarris 是的,“运行”而不是“构建”。 Web 构建需要
db启动并运行才能完成。这就是为什么我需要先运行db。 -
一般同意blackrobot的回答。这似乎是糟糕的设计。你不能在运行时初始化数据库连接/依赖,而不是构建?使整个事情更加健壮。
-
depends_on应该符合您的描述。您是否遇到不同的结果或错误? “特殊图像”是否按预期发挥作用?如果是这样,这应该可以工作——web服务将基于docker-compose build构建,db映像将创建并运行db服务,然后web服务将从刚刚构建的@987654336 运行@ 图片。除了db容器正在运行之外,它不会检查任何其他内容,因此如果您需要更具体地验证任何状态,则必须对其进行管理。 Compose 文档适用于这种情况。
标签: django docker docker-compose