Gitlab' Gateway Timeout'在traefik代理后面

时间:2017-10-11 22:18:06

标签: gitlab docker-swarm traefik

所以我尝试使用traefik作为反向代理在docker swarm上设置gitlab-ce实例。

这是我的代理堆栈;

version: '3'

services:
  traefik:
    image: traefik:alpine
    command: --entryPoints="Name:http Address::80 Redirect.EntryPoint:https" --entryPoints="Name:https Address::443 TLS" --defaultentrypoints="http,https" --acme --acme.acmelogging="true" --acme.email="freelyformd@gmail.com" --acme.entrypoint="https" --acme.storage="acme.json" --acme.onhostrule="true" --docker --docker.swarmmode --docker.domain="mydomain.com" --docker.watch --web
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    networks:
      - traefik-net
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      placement:
        constraints:
          - node.role == manager

networks:
  traefik-net:
    external: true

我的gitlab堆栈

version: '3'

services:
  omnibus:
    image: 'gitlab/gitlab-ce:latest'
    hostname: 'lab.mydomain.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://lab.mydomain.com'
        nginx['listen_port'] = 80
        nginx['listen_https'] = false
        registry_external_url 'https://registry.mydomain.com'
        registry_nginx['listen_port'] = 80
        registry_nginx['listen_https'] = false
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
        gitlab_rails['gitlab_email_from'] = 'lab@mydomain.com'
        gitlab_rails['gitlab_email_reply_to'] = 'lab@mydomain.com'
    ports:
      - 2222:22
    volumes:
      - gitlab_config:/etc/gitlab
      - gitlab_logs:/var/log/gitlab
      - gitlab_data:/var/opt/gitlab
    networks:
      - traefik-net
    deploy:
      labels:
        traefik.enable: "port"
        traefik.frontend.rule: 'Host: lab.mydomain.com, Host: registry.mydomain.com'
        traefik.port: 80
      placement:
        constraints:
          - node.role == manager

  runner:
    image: 'gitlab/gitlab-runner:v1.11.4'
    volumes:
      - gitlab_runner_config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

volumes:
  gitlab_config:
  gitlab_logs:
  gitlab_data:
  gitlab_runner_config:

networks:
  traefik-net:
    external: true
  

traefik-net是一个覆盖网络

因此,当我使用docker stack deploy进行部署并访问lab.mydomain.com时,出现Gateway Timeout错误。当我在gitlab容器中执行curl localhost时,它似乎工作正常。不确定问题是什么,任何指针都会受到赞赏

1 个答案:

答案 0 :(得分:10)

原则上我要做的就是将traefik标签traefik.docker.network设置为traefik-net,参见https://github.com/containous/traefik/issues/1254