From f949992127a746cd5d3782beb3fd0eaaf10020e5 Mon Sep 17 00:00:00 2001 From: knight Date: Wed, 21 Jan 2026 20:37:09 -0500 Subject: [PATCH] Update registry to include UI service - Add registry-ui container with dockerhub.${DOMAIN} hostname - Registry API available at registry.${DOMAIN} - UI available at dockerhub.${DOMAIN}/ui Co-Authored-By: Claude Opus 4.5 --- stacks/registry/docker-compose.yml | 37 ++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/stacks/registry/docker-compose.yml b/stacks/registry/docker-compose.yml index af5b617..55ceb6d 100644 --- a/stacks/registry/docker-compose.yml +++ b/stacks/registry/docker-compose.yml @@ -3,18 +3,16 @@ services: image: registry:2 container_name: registry restart: unless-stopped - volumes: - - ./data:/var/lib/registry - - ./auth:/auth - environment: - REGISTRY_AUTH: htpasswd - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm - REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd - REGISTRY_HTTP_SECRET: ${REGISTRY_HTTP_SECRET} expose: - - 5000 + - "5000" + volumes: + - ./docker:/var/lib/registry networks: - web + healthcheck: + test: ["CMD", "wget", "--spider", "localhost:5000/v2/"] + interval: 60s + timeout: 10s labels: - "traefik.enable=true" - "traefik.http.routers.registry.entrypoints=https" @@ -22,6 +20,27 @@ services: - "traefik.http.routers.registry.tls.certresolver=http" - "traefik.http.services.registry.loadbalancer.server.port=5000" + registry-ui: + image: quiq/docker-registry-ui:latest + container_name: registry-ui + restart: unless-stopped + expose: + - "8000" + volumes: + - ./registry-ui:/opt/data + - ./registry-ui.yml:/opt/config.yml:ro + depends_on: + registry: + condition: service_healthy + networks: + - web + labels: + - "traefik.enable=true" + - "traefik.http.routers.registry-ui.entrypoints=https" + - "traefik.http.routers.registry-ui.rule=Host(`dockerhub.${DOMAIN}`)" + - "traefik.http.routers.registry-ui.tls.certresolver=http" + - "traefik.http.services.registry-ui.loadbalancer.server.port=8000" + networks: web: external: true