簡體   English   中英

運行 2 個程序的 Docker Alpine linux

[英]Docker Alpine linux running 2 programs

我正在嘗試使用 alpine linux 創建 docker 鏡像,運行后將創建包含 2 個正在運行的程序的容器。 這 2(在我看來——我不太了解 docker)不能分開,因為第一個程序更改了秒配置文件,然后也應該重新啟動該程序。

我正在努力如何運行這兩個程序。 我已經添加了自己的腳本,它應該運行該程序,但我遺漏了一些東西——腳本是每行 2 行,是運行該程序的命令——它只啟動第一個程序。

在帶有 python 子進程和systemctl命令的 ubuntu 中,我重新啟動正在運行的服務,但在 alpine linux 中,它作為程序運行,我不知道如何重新啟動/重新加載它。

我建議看看supervisord方法。 您可以在docker 文檔中找到如何使用它。

一些例子:

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

您需要在后台運行第一個程序才能執行腳本的第二行。

每當您有兩個進程必須在一個容器內運行時,就會存在僵屍進程的風險(即容器不會將 SIGKILL 信號正確傳遞給所有進程)。
用作您的基礎圖像phusion/baseimage-docker :它是為管理多個進程而制作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM