我想做这样的事情,在那里我可以按顺序运行多个命令。
db:
image: postgres
web:
build: .
command: python manage.py migrate
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
找到它,使用
示例:
command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
多行中的相同示例:
command: >
bash -c "python manage.py migrate
&& python manage.py runserver 0.0.0.0:8000"
或者:
command: bash -c "
python manage.py migrate
&& python manage.py runserver 0.0.0.0:8000
"
我在一个单独的临时容器中运行诸如迁移之类的启动前工作,如下所示(注意,compose文件必须是'2'类型的版本):
db:
image: postgres
web:
image: app
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
depends_on:
- migration
migration:
build: .
image: app
command: python manage.py migrate
volumes:
- .:/code
links:
- db
depends_on:
- db
这有助于物品保持清洁和分开。需要考虑两件事:
>
您希望避免多个构建,这可以通过使用build和image在第一轮中标记它来实现;您可以引用其他容器中的图像。
我建议使用
下面是一个
version: '3'
services:
app:
build:
context: .
command: >
sh -c "python manage.py wait_for_db &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
这将按顺序调用以下命令: