16

所以我正在尝试使用 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错误。当我curl localhost在 gitlab 容器中执行时,它似乎工作正常。不知道问题是什么,任何指针将不胜感激

4

1 回答 1

17

原来我所要做的就是将 traefik 标签设置traefik.docker.networktraefik-net,请参阅https://github.com/containous/traefik/issues/1254

于 2017-10-11T23:03:20.337 回答