Docker Compose - 如何执行多个命令?

新手上路,请多包涵

我想做这样的事情,我可以在以下代码中运行多个命令:

 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

我怎么能执行多个命令?

谢谢。

原文由 RustyShackleford 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

想通了,使用 bash -c

例子:

 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
  "

原文由 RustyShackleford 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在一个单独的临时容器中运行启动前的东西,比如迁移,就像这样(注意,撰写文件必须是版本’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

这有助于保持清洁和分开。需要考虑两件事:

  1. 您必须确保正确的启动顺序(使用depends_on)。

  2. 您希望避免通过使用构建和映像第一次标记它来实现的多个构建;您可以参考其他容器中的图像。

原文由 Bjorn Stiel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题