gpt4 book ai didi

docker - 带有Dockerfile项目的Dokku多进程(容器)

转载 作者:行者123 更新时间:2023-12-02 20:25:51 30 4
gpt4 key购买 nike

我正在研究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服务器。这个工作正常,但我想运行多个服务。

我尝试用单行 Procfile制作 web: /app/bin/run.sh
,并从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]

最佳答案

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

您将使用CMD启动supervisor,然后将要启动的所有进程放入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"

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

关于docker - 带有Dockerfile项目的Dokku多进程(容器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250583/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com