Search code examples
dockerdocker-composetraefikdocker-registry

Docker-Registry behind Traefik HTTPS-Proxy


I cant get docker-registry working behind a https-proxy. I use traefik for all containers on my server, so i will do with the registry. here is my docker-compose.yml for the registry service, it should use a letsencrypt cert:

version: "3.3"
services:
  registry:
    image: registry:latest
    container_name: docker_registry
    restart: always
    volumes:
      - /srv/docker-registry/data:/data
      - /srv/docker-registry/auth:/auth
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/.htpasswd
      - REGISTRY_LOG_LEVEL=debug
      - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.registry.entrypoints=http"
      - "traefik.http.routers.registry.rule=Host(`registry.example.de`)"
      - "traefik.http.middlewares.registry-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.registry.middlewares=registry-https-redirect"
      - "traefik.http.services.registry-secure.loadbalancer.server.port=5000"
      - "traefik.http.services.registry-secure.loadbalancer.server.scheme=https"
      - "traefik.http.routers.registry-secure.entrypoints=https"
      - "traefik.http.routers.registry-secure.tls.certresolver=http"
      - "traefik.http.routers.registry-secure.tls=true"
      - "traefik.http.routers.registry-secure.rule=Host(`registry.example.de`)"
    networks:
      - proxy
networks:
  proxy:
    external: true

The Error i Get on docker login:

Error response from daemon: Get "https://registry.example.de:5000/v2/": dialing registry.example.de:5000 static system has no HTTPS proxy: connecting to 202.xx.xxx.xxx:5000: dial tcp 202.xx.xxx.xxx:5000: connect: connection refused


Solution

  • registry:2 listens on http. Drop "traefik.http.services.registry-secure.loadbalancer.server.scheme=https"