Docker-Compose HAProxy缺少前端



我试图使用HAProxy作为我的python webapp使用redis的负载均衡器。我正在使用docker-compose将docker运行命令转换为docker-compose。yml——但是我遇到了问题

下面是我当前的"docker run"命令,它工作得很好!

docker run --name sdnapi-redis -v /opt/redis:/data -p 6379:6379 -d redis redis-server --appendonly yes
docker run -d --name sdnapi1 --link sdnapi-redis:redis mycomp/sdnapi
docker run -d --name sdnapi2 --link sdnapi-redis:redis mycomp/sdnapi
docker run -d --name sdnapilb -p 80:80 -p 443:443 -p 1936:1936 -e DEFAULT_SSL_CERT="$(awk 1 ORS='\n' ./certs/cert.pem)" -v /certs/:/certs/ --link sdnapi1:sdnapi1 --link sdnapi2:sdnapi2 dockercloud/haproxy

这是我的docker-compose。

version: '2'
services:
  sdnapi:
    image: mycomp/sdnapi
    links:
      - sdnapi-redis:redis
  sdnapilb:
    image: dockercloud/haproxy:1.2.1
    environment:
      - DEFAULT_SSL_CERT
    volumes:
      - /certs/:/certs/
    ports:
      - "80:80"
      - "443:443"
      - "1936:1936"
    links:
      - sdnapi:sdnapi
  sdnapi-redis:
    image: redis
    volumes:
      - /opt/redis:/data
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes

当我运行docker运行命令时,这是sdnapilb日志:

  global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  log-send-hostname
  maxconn 4096
  pidfile /var/run/haproxy.pid
  user haproxy
  group haproxy
  daemon
  stats socket /var/run/haproxy.stats level admin
  ssl-default-bind-options no-sslv3
  ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA
defaults
  balance roundrobin
  log global
  mode http
  option redispatch
  option httplog
  option dontlognull
  option forwardfor
  timeout connect 5000
  timeout client 50000
  timeout server 50000
listen stats
  bind :1936
  mode http
  stats enable
  timeout connect 10s
  timeout client 1m
  timeout server 1m
  stats hide-version
  stats realm Haproxy Statistics
  stats uri /
  stats auth stats:stats
frontend default_frontend
  bind :80
  bind :443 ssl crt /certs/
  reqadd X-Forwarded-Proto: https
  maxconn 4096
  defcon 1
  default_backend default_service

当我运行docker-compose时。Yml与"docker-compose up -d"…我失去了前端部分。

global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  log-send-hostname
  maxconn 4096
  pidfile /var/run/haproxy.pid
  user haproxy
  group haproxy
  daemon
  stats socket /var/run/haproxy.stats level admin
  ssl-default-bind-options no-sslv3
  ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA
defaults
  balance roundrobin
  log global
  mode http
  option redispatch
  option httplog
  option dontlognull
  option forwardfor
  timeout connect 5000
  timeout client 50000
  timeout server 50000
listen stats
  bind :1936
  mode http
  stats enable
  timeout connect 10s
  timeout client 1m
  timeout server 1m
  stats hide-version
  stats realm Haproxy Statistics
  stats uri /
  stats auth stats:stats

你能看到任何设置的问题吗?我想使用docker-compose,因为它具有扩展能力。

我解决了这个问题…

docker-compose。Yml有链接的问题…链接的格式为服务名:别名

我的问题是,即使我的服务名称是正确的,别名'是不正确的…导致docker-compose失败而没有实际错误。由于别名不存在,它只是不链接容器-因此没有前端

最新更新