【问题标题】:Dokku multi-process (container) with Dockerfile project带有 Dockerfile 项目的 Dokku 多进程(容器)
【发布时间】:2015-10-21 03:46:08
【问题描述】:

我正在查看http://progrium.viewdocs.io/dokku/process-management/ 并试图弄清楚如何从一个项目中运行多个服务。

我有一个带有 Dockerfile 的仓库:

FROM wjdp/flatcar

ADD . app

RUN /app/bin/install.sh

EXPOSE 8000

CMD /app/bin/run.sh

run.sh 启动单线程 Web 服务器。这工作正常,但我想运行几个服务。

我尝试使用单行 web: /app/bin/run.sh 创建 Procfile 并从 Dockerfile 中删除 CMD 行。这是行不通的,因为没有运行 Docker 容器的命令就无法存活,dokku 会伤心:

remote: Error response from daemon: Cannot kill container ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e: Container ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e is not running
remote: Error: failed to kill containers: [ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e]

【问题讨论】:

    标签: docker dockerfile dokku


    【解决方案1】:

    您最好的选择可能是使用 supervisord。 Supervisord 是一个非常轻量级的进程管理器。

    你可以用你的 CMD 启动 supervisord,然后把你想要启动的所有进程放到 supervisord.conf 文件中。

    有关更多信息,请查看 Docker 文档:https://docs.docker.com/articles/using_supervisord/。最相关的摘录(取自该页面,但经过改写):

    你可以把它放到你的 Dockerfile 中:

    COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
    CMD ["/usr/bin/supervisord"]
    

    supervisord.conf 文件将包含如下内容:

    [supervisord]
    nodaemon=true
    
    [program:sshd]
    command=/usr/sbin/sshd -D
    
    [program:apache2]
    command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
    

    显然,您还需要确保在您的映像中安装了 supervisord。它是大多数发行版的一部分,因此您可能可以使用 yum 或 apt-get 来安装它。

    【讨论】:

    • 谢谢,我之前使用过 supervisord,我确实想到了这一点,但尝试遵循 Docker 最佳实践我试图避免每个容器运行多个主进程。
    • 也就是说,这可能是目前最好的选择。直到 docker compose 支持到来。
    • 那么我可能误解了您要做什么。我以为你想在一个容器中运行多个进程?也就是说,该指南确实是一个非常“温和”的最佳实践。当它有意义时这是一个好主意,但它通常没有,有时它实际上是不可能的。例如,我有两个进程都连接到另一个的 TCP 套接字。链接不支持这种循环依赖。所以选择要么将两个套接字绑定到主机端口,要么将两个进程放在同一个容器中。
    • 我也很好奇 docker compose 会如何融入图片中?
    猜你喜欢
    • 2018-08-05
    • 1970-01-01
    • 2015-02-09
    • 2017-11-21
    • 1970-01-01
    • 2023-02-25
    • 2016-03-27
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多