feat(service): upgrade docker registry template (#7034)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
This commit is contained in:
parent
99e3c3ea9f
commit
eaa668036f
4 changed files with 63 additions and 17 deletions
|
|
@ -515,6 +515,31 @@ public function extraFields()
|
||||||
}
|
}
|
||||||
$fields->put('RabbitMQ', $data->toArray());
|
$fields->put('RabbitMQ', $data->toArray());
|
||||||
break;
|
break;
|
||||||
|
case $image->is('registry'):
|
||||||
|
$data = collect([]);
|
||||||
|
$registry_user = $this->environment_variables()->where('key', 'SERVICE_USER_REGISTRY')->first();
|
||||||
|
$registry_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_REGISTRY')->first();
|
||||||
|
if ($registry_user) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Registry User' => [
|
||||||
|
'key' => data_get($registry_user, 'key'),
|
||||||
|
'value' => data_get($registry_user, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($registry_password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Registry Password' => [
|
||||||
|
'key' => data_get($registry_password, 'key'),
|
||||||
|
'value' => data_get($registry_password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Docker Registry', $data->toArray());
|
||||||
|
break;
|
||||||
case $image->contains('tolgee'):
|
case $image->contains('tolgee'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# documentation: https://docs.docker.com/registry/
|
# documentation: https://distribution.github.io/distribution/
|
||||||
# slogan: The Docker Registry lets you distribute Docker images.
|
# slogan: The Docker Registry lets you distribute Docker images.
|
||||||
# category: devtools
|
# category: devtools
|
||||||
# tags: registry,images,docker
|
# tags: registry,images,docker
|
||||||
|
|
@ -7,20 +7,35 @@
|
||||||
|
|
||||||
services:
|
services:
|
||||||
registry:
|
registry:
|
||||||
image: registry:2
|
image: registry:3
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_URL_REGISTRY_5000
|
- SERVICE_URL_REGISTRY_5000
|
||||||
|
- USERNAME=${SERVICE_USER_REGISTRY}
|
||||||
|
- PASSWORD=${SERVICE_PASSWORD_REGISTRY}
|
||||||
- REGISTRY_AUTH=htpasswd
|
- REGISTRY_AUTH=htpasswd
|
||||||
- REGISTRY_AUTH_HTPASSWD_REALM=Registry
|
- REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
|
||||||
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password
|
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password
|
||||||
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data
|
command: ["/entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
|
- registry-data:/var/lib/registry
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ./auth/registry.password
|
source: ./etc/entrypoint.sh
|
||||||
target: /auth/registry.password
|
target: /entrypoint.sh
|
||||||
isDirectory: false
|
mode: "0755"
|
||||||
content: >-
|
content: |
|
||||||
testuser:$2y$05$/o2JvmI2bhExXIt6Oqxa7ekYB7v3scj1wFEf6tBslJvJOMoPQL.Gy
|
#!/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
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ./config/config.yml
|
source: ./config/config.yml
|
||||||
target: /etc/docker/registry/config.yml
|
target: /etc/docker/registry/config.yml
|
||||||
|
|
@ -45,7 +60,13 @@ services:
|
||||||
enabled: true
|
enabled: true
|
||||||
interval: 10s
|
interval: 10s
|
||||||
threshold: 3
|
threshold: 3
|
||||||
- type: bind
|
healthcheck:
|
||||||
source: ./data
|
test:
|
||||||
target: /data
|
- CMD
|
||||||
isDirectory: true
|
- wget
|
||||||
|
- "-q"
|
||||||
|
- "--spider"
|
||||||
|
- "http://localhost:5000/"
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
|
||||||
|
|
@ -773,9 +773,9 @@
|
||||||
"minversion": "0.0.0"
|
"minversion": "0.0.0"
|
||||||
},
|
},
|
||||||
"docker-registry": {
|
"docker-registry": {
|
||||||
"documentation": "https://docs.docker.com/registry/?utm_source=coolify.io",
|
"documentation": "https://distribution.github.io/distribution/?utm_source=coolify.io",
|
||||||
"slogan": "The Docker Registry lets you distribute Docker images.",
|
"slogan": "The Docker Registry lets you distribute Docker images.",
|
||||||
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUdJU1RSWV81MDAwCiAgICAgIC0gUkVHSVNUUllfQVVUSD1odHBhc3N3ZAogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUkVBTE09UmVnaXN0cnkKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEg9L2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgLSBSRUdJU1RSWV9TVE9SQUdFX0ZJTEVTWVNURU1fUk9PVERJUkVDVE9SWT0vZGF0YQogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vYXV0aC9yZWdpc3RyeS5wYXNzd29yZAogICAgICAgIHRhcmdldDogL2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgICBpc0RpcmVjdG9yeTogZmFsc2UKICAgICAgICBjb250ZW50OiAndGVzdHVzZXI6JDJ5JDA1JC9vMkp2bUkyYmhFeFhJdDZPcXhhN2VrWUI3djNzY2oxd0ZFZjZ0QnNsSnZKT01vUFFMLkd5JwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAwLjFcbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogMyIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZGF0YQogICAgICAgIHRhcmdldDogL2RhdGEKICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZQo=",
|
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUdJU1RSWV81MDAwCiAgICAgIC0gJ1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1JFR0lTVFJZfScKICAgICAgLSAnUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFR0lTVFJZfScKICAgICAgLSBSRUdJU1RSWV9BVVRIPWh0cGFzc3dkCiAgICAgIC0gJ1JFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUkVBTE09UmVnaXN0cnkgUmVhbG0nCiAgICAgIC0gUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIPS9hdXRoL3JlZ2lzdHJ5LnBhc3N3b3JkCiAgICBjb21tYW5kOgogICAgICAtIC9lbnRyeXBvaW50LnNoCiAgICB2b2x1bWVzOgogICAgICAtICdyZWdpc3RyeS1kYXRhOi92YXIvbGliL3JlZ2lzdHJ5JwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvdXNyL2Jpbi9lbnYgc2hcbnNldCAtZSBcblxuaWYgWyAteiBcIiRVU0VSTkFNRVwiIF0gfHwgWyAteiBcIiRQQVNTV09SRFwiIF07IHRoZW5cbiAgICBlY2hvIFwiRXJyb3I6IFVTRVJOQU1FIGFuZCBQQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzZXRcIlxuICAgIGV4aXQgMVxuZmlcblxuYXBrIGFkZCAtLW5vLWNhY2hlIGFwYWNoZTItdXRpbHNcbm1rZGlyIC1wIFwiJChkaXJuYW1lIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiKVwiXG5jaG1vZCA3NTUgXCIkKGRpcm5hbWUgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIpXCJcbmh0cGFzc3dkIC1CYmMgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIgXCIkVVNFUk5BTUVcIiBcIiRQQVNTV09SRFwiXG5yZWdpc3RyeSBzZXJ2ZSAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9jb25maWcueW1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sCiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlCiAgICAgICAgY29udGVudDogInZlcnNpb246IDAuMVxubG9nOlxuICBmaWVsZHM6XG4gICAgc2VydmljZTogcmVnaXN0cnlcbnN0b3JhZ2U6XG4gIGNhY2hlOlxuICAgIGJsb2JkZXNjcmlwdG9yOiBpbm1lbW9yeVxuICBmaWxlc3lzdGVtOlxuICAgIHJvb3RkaXJlY3Rvcnk6IC92YXIvbGliL3JlZ2lzdHJ5XG5odHRwOlxuICBhZGRyOiA6NTAwMFxuICBoZWFkZXJzOlxuICAgIFgtQ29udGVudC1UeXBlLU9wdGlvbnM6IFtub3NuaWZmXVxuaGVhbHRoOlxuICBzdG9yYWdlZHJpdmVyOlxuICAgIGVuYWJsZWQ6IHRydWVcbiAgICBpbnRlcnZhbDogMTBzXG4gICAgdGhyZXNob2xkOiAzIgogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjUwMDAvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
|
||||||
"tags": [
|
"tags": [
|
||||||
"registry",
|
"registry",
|
||||||
"images",
|
"images",
|
||||||
|
|
|
||||||
|
|
@ -773,9 +773,9 @@
|
||||||
"minversion": "0.0.0"
|
"minversion": "0.0.0"
|
||||||
},
|
},
|
||||||
"docker-registry": {
|
"docker-registry": {
|
||||||
"documentation": "https://docs.docker.com/registry/?utm_source=coolify.io",
|
"documentation": "https://distribution.github.io/distribution/?utm_source=coolify.io",
|
||||||
"slogan": "The Docker Registry lets you distribute Docker images.",
|
"slogan": "The Docker Registry lets you distribute Docker images.",
|
||||||
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUkVHSVNUUllfNTAwMAogICAgICAtIFJFR0lTVFJZX0FVVEg9aHRwYXNzd2QKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1JFQUxNPVJlZ2lzdHJ5CiAgICAgIC0gUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIPS9hdXRoL3JlZ2lzdHJ5LnBhc3N3b3JkCiAgICAgIC0gUkVHSVNUUllfU1RPUkFHRV9GSUxFU1lTVEVNX1JPT1RESVJFQ1RPUlk9L2RhdGEKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgICB0YXJnZXQ6IC9hdXRoL3JlZ2lzdHJ5LnBhc3N3b3JkCiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlCiAgICAgICAgY29udGVudDogJ3Rlc3R1c2VyOiQyeSQwNSQvbzJKdm1JMmJoRXhYSXQ2T3F4YTdla1lCN3Yzc2NqMXdGRWY2dEJzbEp2Sk9Nb1BRTC5HeScKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vY29uZmlnL2NvbmZpZy55bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvZG9ja2VyL3JlZ2lzdHJ5L2NvbmZpZy55bWwKICAgICAgICBpc0RpcmVjdG9yeTogZmFsc2UKICAgICAgICBjb250ZW50OiAidmVyc2lvbjogMC4xXG5sb2c6XG4gIGZpZWxkczpcbiAgICBzZXJ2aWNlOiByZWdpc3RyeVxuc3RvcmFnZTpcbiAgY2FjaGU6XG4gICAgYmxvYmRlc2NyaXB0b3I6IGlubWVtb3J5XG4gIGZpbGVzeXN0ZW06XG4gICAgcm9vdGRpcmVjdG9yeTogL3Zhci9saWIvcmVnaXN0cnlcbmh0dHA6XG4gIGFkZHI6IDo1MDAwXG4gIGhlYWRlcnM6XG4gICAgWC1Db250ZW50LVR5cGUtT3B0aW9uczogW25vc25pZmZdXG5oZWFsdGg6XG4gIHN0b3JhZ2Vkcml2ZXI6XG4gICAgZW5hYmxlZDogdHJ1ZVxuICAgIGludGVydmFsOiAxMHNcbiAgICB0aHJlc2hvbGQ6IDMiCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2RhdGEKICAgICAgICB0YXJnZXQ6IC9kYXRhCiAgICAgICAgaXNEaXJlY3Rvcnk6IHRydWUK",
|
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUkVHSVNUUllfNTAwMAogICAgICAtICdVU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9SRUdJU1RSWX0nCiAgICAgIC0gJ1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9SRUdJU1RSWX0nCiAgICAgIC0gUkVHSVNUUllfQVVUSD1odHBhc3N3ZAogICAgICAtICdSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1JFQUxNPVJlZ2lzdHJ5IFJlYWxtJwogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSD0vYXV0aC9yZWdpc3RyeS5wYXNzd29yZAogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgdm9sdW1lczoKICAgICAgLSAncmVnaXN0cnktZGF0YTovdmFyL2xpYi9yZWdpc3RyeScKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZXRjL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgbW9kZTogJzA3NTUnCiAgICAgICAgY29udGVudDogIiMhL3Vzci9iaW4vZW52IHNoXG5zZXQgLWUgXG5cbmlmIFsgLXogXCIkVVNFUk5BTUVcIiBdIHx8IFsgLXogXCIkUEFTU1dPUkRcIiBdOyB0aGVuXG4gICAgZWNobyBcIkVycm9yOiBVU0VSTkFNRSBhbmQgUEFTU1dPUkQgZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgc2V0XCJcbiAgICBleGl0IDFcbmZpXG5cbmFwayBhZGQgLS1uby1jYWNoZSBhcGFjaGUyLXV0aWxzXG5ta2RpciAtcCBcIiQoZGlybmFtZSBcIiRSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEhcIilcIlxuY2htb2QgNzU1IFwiJChkaXJuYW1lIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiKVwiXG5odHBhc3N3ZCAtQmJjIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiIFwiJFVTRVJOQU1FXCIgXCIkUEFTU1dPUkRcIlxucmVnaXN0cnkgc2VydmUgL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbFxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAwLjFcbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogMyIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo1MDAwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
|
||||||
"tags": [
|
"tags": [
|
||||||
"registry",
|
"registry",
|
||||||
"images",
|
"images",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue