diff --git a/registry/.env.example b/registry/.env.example new file mode 100644 index 0000000..e015a36 --- /dev/null +++ b/registry/.env.example @@ -0,0 +1 @@ +REGISTRY_HOST=registy.example.org diff --git a/registry/.gitignore b/registry/.gitignore new file mode 100644 index 0000000..475855f --- /dev/null +++ b/registry/.gitignore @@ -0,0 +1,2 @@ +.env +registry/ \ No newline at end of file diff --git a/registry/README.md b/registry/README.md new file mode 100644 index 0000000..5b1d29d --- /dev/null +++ b/registry/README.md @@ -0,0 +1,10 @@ +# About Registy + +# How to setup + +```bash +mkdir -p registry/data +cp .env.example .env +docker run --rm -it httpd htpasswd -Bbn test test > ./registry/registry.password +docker compose up -d +``` diff --git a/registry/docker-compose.yml b/registry/docker-compose.yml new file mode 100644 index 0000000..57350d6 --- /dev/null +++ b/registry/docker-compose.yml @@ -0,0 +1,35 @@ +networks: + web: + external: true + +volumes: + registry-data: + driver: local + +services: + registry: + restart: always + image: registry:latest + environment: + REGISTRY_AUTH: htpasswd + REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm + REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password + REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data + volumes: + - ./registry/registry.password:/auth/registry.password + - registry-data:/data + labels: + - "traefik.enable=true" + + - "traefik.http.services.registry-service.loadbalancer.server.port=5000" + + - "traefik.http.routers.registry-http.entrypoints=web" + - "traefik.http.routers.registry-http.middlewares=https-redirect@docker" + - "traefik.http.routers.registry-http.rule=Host(`${REGISTRY_HOST}`)" + + - "traefik.http.routers.registry-https.entrypoints=websecure" + - "traefik.http.routers.registry-https.tls=true" + - "traefik.http.routers.registry-https.tls.certresolver=letsencrypt" + - "traefik.http.routers.registry-https.rule=Host(`${REGISTRY_HOST}`)" + networks: + - web