来自HAProxy docker container

时间:2017-07-02 08:48:32

标签: sockets docker docker-compose haproxy

我想让对等容器访问/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: {}

1 个答案:

答案 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