【问题标题】:How run Symfony commands in background Docker如何在后台 Docker 中运行 Symfony 命令
【发布时间】:2016-11-24 11:29:36
【问题描述】:

我需要在后台运行 rabbitMQ 消费者 如何在 Docker Container 中运行他?

【问题讨论】:

  • 您可以docker exec... 到容器上并手动运行命令,或者您可以运行单独的容器来运行消费者进程。后者是我的偏好。
  • 请提供更多信息,这是您正在编写的 dockerfile 吗?你想在同一个容器中运行这个命令吗?等等……
  • 一个带有一个容器消费者的 docker 配置?还是在容器中运行新后台脚本的脚本?

标签: symfony docker rabbitmq


【解决方案1】:

根据 docker 哲学,您需要在单独的容器中运行它。 您可以重用您的代码,但它应该是绝对独立的容器/可能与您运行 web 的容器甚至不同。 您可以手动运行它: docker run -v /path/to/app:/container-dir -w /container-dir your-container php bin/console your:command --env prod

或者你可以使用 docker-compose 或任何其他工具

附:不要忘记指定用户。您需要使用与运行 Web 实例相同的 UID 的用户来运行它,以避免文件访问问题

【讨论】:

    【解决方案2】:

    请注意,这在很大程度上取决于您想要做什么,您的问题并不清楚,但是如果您想在同一个容器和同一个 shell 中启动命令,并且您对任何输出都不感兴趣。

    然后它就像任何其他 linux 进程一样:

    command > /dev/null 2>&1 &
    

    地点:

    • command 是你要运行的随机命令
    • >/dev/null 将每个 stdout 输出发送到黑洞
    • 2>&1stderr 做同样的事情
    • & 在后台运行

    如果您不想在关闭 shell/用户注销时终止命令,请使用 nohup...

    nohup command > /dev/null 2>&1 &
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2015-05-18
      • 1970-01-01
      • 2021-07-04
      • 2015-11-19
      • 2020-01-02
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多