gpt4 book ai didi

python - supervisor.sock 在 docker 容器中拒绝连接

转载 作者:IT老高 更新时间:2023-10-28 21:24:11 24 4
gpt4 key购买 nike

supervisor.sock 拒绝 docker 容器中的连接

我已尝试通过 supervisorctl unix:///var/run/supervisor.sock refused connection 修复它和 Overlayfs does not work with unix domain sockets

但是,它仍然无法在我的 debain 服务器中运行。


这是我的 docker_supervisor.conf

FROM python:2.7

RUN pip install supervisor

RUN mkdir /app
WORKDIR /app

COPY docker_supervisor.conf /app

RUN supervisord -c docker_supervisor.conf

CMD ["supervisorctl", "-c", "docker_supervisor.conf", "restart", "apiapp:"]

这里是 docker_supervisor.conf

[unix_http_server]
file=/var/run/docker_supervisor.sock
chown=root:root
chmod=0777

[supervisord]
logfile=/var/run/docker_supervisor.log
pidfile=/var/run/docker_supervisor.pid

[rpcinterface:supervisor]
supervisor.rpcinterface_factory =
supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/docker_supervisor.sock

[group:apiapp]
programs=api_web

[program:api_web]
user=root
directory=/app
command=python echo "OKOKOK"

sudo docker build --no-cache -t test .
Successfully built c3b4061fc9f7


sudo docker run -v $(pwd):/app test
unix:///var/run/docker_supervisor.sock refused connection

我试过执行

sudo docker run --tmpfs /var/run -v $(pwd):/app test

但它得到相同的结果“unix:///var/run/docker_supervisor.sock 拒绝连接”

如何修复它并让supervisor在容器中运行?

最佳答案

我刚刚遇到了同样的问题,并通过将套接字文件路径更改为 /dev/shm/supervisor.sock 来解决它。

supervisord.conf 文件现在如下所示:

[unix_http_server]
file=/dev/shm/supervisor.sock ; <-- change it here
chmod=0700

[supervisord]
nodaemon=true ; <-- add nodaemon for Docker
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///dev/shm/supervisor.sock ; <-- and change it here too

[program:app]
...

注意:建议使用 supervisorctl-c 参数来确保它正在读取正确的配置文件。否则,它可能会退回到默认值之一并尝试使用不起作用的默认套接字文件 /var/run/supervisor.sock 进行连接。

编辑 - 添加了更多值得关注的内容

注意 2:在使用客户端之前,请确保 Supervisor 服务器正在运行。

# Start server
supervisord -c /path/to/supervisor.conf
# Then use client
supervisorctl -c /path/to/supervisor.conf status

注意 3:确保套接字文件存在。如果没有,您可以创建它,例如,像这样 (reference):

python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/dev/shm/supervisor.sock')"

注意 4:请记住,也可以使用 TCP 代替 Unix 套接字文件。

[inet_http_server]
port = 127.0.0.1:9001

[supervisorctl]
serverurl = http://127.0.0.1:9001

; Rest of the supervisor.conf file...

引用资料:

关于python - supervisor.sock 在 docker 容器中拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753500/

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