Files
2026-07-19 10:05:49 +02:00

54 lines
1.9 KiB
Django/Jinja

# Managed by Ansible — do not edit manually
services:
registry:
image: registry:2
container_name: registry
restart: unless-stopped
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Container Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_STORAGE_DELETE_ENABLED: "true"
volumes:
- {{ registry_data_dir }}/data:/var/lib/registry
- {{ registry_data_dir }}/auth:/auth:ro
networks:
- traefik_public
- registry_internal
labels:
- "traefik.enable=true"
# PathPrefix(/v2) is more specific than the UI's bare Host rule — Traefik routes docker CLI traffic here
- "traefik.http.routers.registry-api.rule=Host(`{{ domain_registry }}`) && PathPrefix(`/v2`)"
- "traefik.http.routers.registry-api.entrypoints=websecure"
- "traefik.http.routers.registry-api.tls.certresolver=letsencrypt"
- "traefik.http.services.registry.loadbalancer.server.port=5000"
registry-ui:
image: joxit/docker-registry-ui:{{ registry_ui_version }}
container_name: registry-ui
restart: unless-stopped
environment:
- SINGLE_REGISTRY=true
- REGISTRY_SECURED=true
- REGISTRY_URL=https://{{ domain_registry }}
- DELETE_IMAGES=true
- SHOW_CATALOG_NB_TAGS=true
- SHOW_CONTENT_DIGEST=true
- CATALOG_ELEMENTS_LIMIT=1000
- TAGLIST_PAGE_SIZE=100
- REGISTRY_TITLE=Container Registry
networks:
- traefik_public
labels:
- "traefik.enable=true"
- "traefik.http.routers.registry-ui.rule=Host(`{{ domain_registry }}`)"
- "traefik.http.routers.registry-ui.entrypoints=websecure"
- "traefik.http.routers.registry-ui.tls.certresolver=letsencrypt"
- "traefik.http.services.registry-ui.loadbalancer.server.port=80"
networks:
traefik_public:
external: true
registry_internal:
internal: true