我正在尝试使用alpine linux创建docker镜像,运行后会创建包含2个正在运行的程序的容器。这个2(在我看来 - 我不太了解docker)不能分开,因为第一个程序会更改秒配置文件,然后也应该重新启动该程序。
我正在努力如何运行这两个程序。我已经添加了自己的脚本,应该运行该程序,但我遗漏了一些东西 - 脚本是每行2行是运行该程序的命令 - 它只启动第一个程序。
在ubuntu中使用python subprocess和systemctl命令我重新启动运行服务但是在alpine linux中它以程序的形式运行,我不知道如何重新启动/重新加载它。
感谢您的每一次帮助
答案 0 :(得分:7)
我建议看一下supervisord方法。您可以在docker documentation中找到如何使用它。
一些例子:
1。 Dockerfile
是:
FROM alpine:latest
RUN apk update && apk add --no-cache supervisor openssh nginx
COPY supervisord.conf /etc/supervisord.conf
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
2。 supervisord.conf
是:
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:nginx]
command=nginx -c /etc/nginx/nginx.conf
答案 1 :(得分:4)
您需要在后台运行第一个程序,以便执行脚本的第二行。
每当你有两个必须在一个容器内运行的进程时,存在zombie processes的风险(即容器未能正确地将SIGKILL信号传递给所有进程) 。
用作基本图像phusion/baseimage-docker
:它用于管理多个进程。