我想让对等容器访问/var/run/haproxy.sock
。不幸的是,当我尝试通过使用命名卷绑定挂载时,它会抛出错误。是否可以与其他容器共享 haproxy.sock ?我认为是,所以我想知道我在这里缺少哪一件。可能是权利 - 但如何正确设置呢?
worker1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
worker1 | [ALERT] 182/075644 (6) : Starting frontend GLOBAL: error when trying to preserve previous UNIX socket [/var/run/haproxy.sock]
worker1 | <5>haproxy-systemd-wrapper: exit, haproxy RC=1
我在 haproxy.cfg :
中有以下配置global
maxconn 8204
tune.ssl.default-dh-param 2048
stats socket /var/run/haproxy.sock mode 660 level admin
stats timeout 30s
我使用docker-compose以群集模式启动我的容器:
version: '3.2'
services:
haproxy:
image: haproxy:1.7.7
ports:
- "80:80"
- "443:443"
volumes:
- "/home/ubuntu/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro"
- "socket:/var/run/haproxy.sock:rw"
ulimits:
nofile:
soft: 16479
hard: 16479
deploy:
placement:
constraints:
- node.hostname==worker1
volumes:
socket: {}
答案 0 :(得分:1)
命名卷只能是目录,而不是单个文件。结果,这一行;
"socket:/var/run/haproxy.sock:rw"
将尝试在容器内的位置/var/run/haproxy.sock
处安装目录(“套接字”卷)。
如果“haproxy.sock”的位置是可配置的,您可以尝试使用;
"socket:/my-haproxy-socket-directory"
(套接字本身位于容器内的/my-haproxy-socket-directory/haproxy.sock
)