Dokploy

Docker Registry

Distribution implementation for storing and distributing of Docker container images and artifacts.

Docker Registry logo

Configuration

services:
  registry:
    image: registry:3
    restart: unless-stopped
    environment:
      - USERNAME=${USERNAME}
      - PASSWORD=${PASSWORD}
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password
      - REGISTRY_HTTP_RELATIVEURLS=true
    entrypoint: ["sh", "/entrypoint.sh"]
    volumes:
      - registry-data:/var/lib/registry
      - type: bind
        source: ../files/entrypoint.sh
        target: /entrypoint.sh
      - type: bind
        source: ../files/config.yml
        target: /etc/docker/registry/config.yml
    expose:
      - 5000
    healthcheck:
      test:
        - CMD
        - wget
        - "-q"
        - "--spider"
        - "http://localhost:5000/"
      interval: 5s
      timeout: 20s
      retries: 10

volumes:
  registry-data:
[variables]
main_domain = "${domain}"
username = "${username}"
password = "${password:32}"

[[config.domains]]
serviceName = "registry"
port = 5_000
host = "${main_domain}"

[config.env]
USERNAME = "${username}"
PASSWORD = "${password}"

[[config.mounts]]
filePath = "./config.yml"
content = """
version: 0.1

log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
"""

[[config.mounts]]
filePath = "./entrypoint.sh"
content = """
#!/usr/bin/env sh

set -e

if [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
    echo "Error: USERNAME and PASSWORD environment variables must be set"
    exit 1
fi

apk add --no-cache apache2-utils
mkdir -p "$(dirname "$REGISTRY_AUTH_HTPASSWD_PATH")"
chmod 755 "$(dirname "$REGISTRY_AUTH_HTPASSWD_PATH")"
htpasswd -Bbc "$REGISTRY_AUTH_HTPASSWD_PATH" "$USERNAME" "$PASSWORD"
registry serve /etc/docker/registry/config.yml
"""

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICByZWdpc3RyeTpcbiAgICBpbWFnZTogcmVnaXN0cnk6M1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFVTRVJOQU1FPSR7VVNFUk5BTUV9XG4gICAgICAtIFBBU1NXT1JEPSR7UEFTU1dPUkR9XG4gICAgICAtIFJFR0lTVFJZX0FVVEg9aHRwYXNzd2RcbiAgICAgIC0gUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9SRUFMTT1SZWdpc3RyeSBSZWFsbVxuICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEg9L2F1dGgvcmVnaXN0cnkucGFzc3dvcmRcbiAgICAgIC0gUkVHSVNUUllfSFRUUF9SRUxBVElWRVVSTFM9dHJ1ZVxuICAgIGVudHJ5cG9pbnQ6IFtcInNoXCIsIFwiL2VudHJ5cG9pbnQuc2hcIl1cbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWdpc3RyeS1kYXRhOi92YXIvbGliL3JlZ2lzdHJ5XG4gICAgICAtIHR5cGU6IGJpbmRcbiAgICAgICAgc291cmNlOiAuLi9maWxlcy9lbnRyeXBvaW50LnNoXG4gICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2hcbiAgICAgIC0gdHlwZTogYmluZFxuICAgICAgICBzb3VyY2U6IC4uL2ZpbGVzL2NvbmZpZy55bWxcbiAgICAgICAgdGFyZ2V0OiAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sXG4gICAgZXhwb3NlOlxuICAgICAgLSA1MDAwXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRFxuICAgICAgICAtIHdnZXRcbiAgICAgICAgLSBcIi1xXCJcbiAgICAgICAgLSBcIi0tc3BpZGVyXCIgICAgIFxuICAgICAgICAtIFwiaHR0cDovL2xvY2FsaG9zdDo1MDAwL1wiICBcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogMjBzXG4gICAgICByZXRyaWVzOiAxMFxuXG52b2x1bWVzOlxuICByZWdpc3RyeS1kYXRhOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnVzZXJuYW1lID0gXCIke3VzZXJuYW1lfVwiXG5wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJyZWdpc3RyeVwiXG5wb3J0ID0gNV8wMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcblxuW2NvbmZpZy5lbnZdXG5VU0VSTkFNRSA9IFwiJHt1c2VybmFtZX1cIlxuUEFTU1dPUkQgPSBcIiR7cGFzc3dvcmR9XCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIuL2NvbmZpZy55bWxcIlxuY29udGVudCA9IFwiXCJcIlxudmVyc2lvbjogMC4xXG5cbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogM1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiLi9lbnRyeXBvaW50LnNoXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMhL3Vzci9iaW4vZW52IHNoXG5cbnNldCAtZSBcblxuaWYgWyAteiBcIiRVU0VSTkFNRVwiIF0gfHwgWyAteiBcIiRQQVNTV09SRFwiIF07IHRoZW5cbiAgICBlY2hvIFwiRXJyb3I6IFVTRVJOQU1FIGFuZCBQQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzZXRcIlxuICAgIGV4aXQgMVxuZmlcblxuYXBrIGFkZCAtLW5vLWNhY2hlIGFwYWNoZTItdXRpbHNcbm1rZGlyIC1wIFwiJChkaXJuYW1lIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiKVwiXG5jaG1vZCA3NTUgXCIkKGRpcm5hbWUgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIpXCJcbmh0cGFzc3dkIC1CYmMgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIgXCIkVVNFUk5BTUVcIiBcIiRQQVNTV09SRFwiXG5yZWdpc3RyeSBzZXJ2ZSAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sXG5cIlwiXCJcbiIKfQ==

Tags

registry, docker, self-hosted


Version: 2

On this page