Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions app/Models/Service.php
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,31 @@ public function extraFields()
}
$fields->put('RabbitMQ', $data->toArray());
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'):
$data = collect([]);
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first();
Expand Down
39 changes: 32 additions & 7 deletions templates/compose/docker-registry.yaml
Original file line number Diff line number Diff line change
@@ -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.
# category: devtools
# tags: registry,images,docker
Expand All @@ -7,20 +7,35 @@

services:
registry:
image: registry:2
image: registry:3
environment:
- SERVICE_URL_REGISTRY_5000
- USERNAME=${SERVICE_USER_REGISTRY}
- PASSWORD=${SERVICE_PASSWORD_REGISTRY}
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data
command: ["/entrypoint.sh"]
volumes:
- type: bind
source: ./auth/registry.password
target: /auth/registry.password
isDirectory: false
content: >-
testuser:$2y$05$/o2JvmI2bhExXIt6Oqxa7ekYB7v3scj1wFEf6tBslJvJOMoPQL.Gy
source: ./etc/entrypoint.sh
target: /entrypoint.sh
mode: "0755"
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
- type: bind
source: ./config/config.yml
target: /etc/docker/registry/config.yml
Expand Down Expand Up @@ -49,3 +64,13 @@ services:
source: ./data
target: /data
isDirectory: true
healthcheck:
test:
- CMD
- wget
- "-q"
- "--spider"
- "http://localhost:5000/"
interval: 5s
timeout: 20s
retries: 10
4 changes: 2 additions & 2 deletions templates/service-templates-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -725,9 +725,9 @@
"minversion": "0.0.0"
},
"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.",
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUdJU1RSWV81MDAwCiAgICAgIC0gUkVHSVNUUllfQVVUSD1odHBhc3N3ZAogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUkVBTE09UmVnaXN0cnkKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEg9L2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgLSBSRUdJU1RSWV9TVE9SQUdFX0ZJTEVTWVNURU1fUk9PVERJUkVDVE9SWT0vZGF0YQogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vYXV0aC9yZWdpc3RyeS5wYXNzd29yZAogICAgICAgIHRhcmdldDogL2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgICBpc0RpcmVjdG9yeTogZmFsc2UKICAgICAgICBjb250ZW50OiAndGVzdHVzZXI6JDJ5JDA1JC9vMkp2bUkyYmhFeFhJdDZPcXhhN2VrWUI3djNzY2oxd0ZFZjZ0QnNsSnZKT01vUFFMLkd5JwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAwLjFcbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogMyIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZGF0YQogICAgICAgIHRhcmdldDogL2RhdGEKICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZQo=",
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUdJU1RSWV81MDAwCiAgICAgIC0gJ1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1JFR0lTVFJZfScKICAgICAgLSAnUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFR0lTVFJZfScKICAgICAgLSBSRUdJU1RSWV9BVVRIPWh0cGFzc3dkCiAgICAgIC0gUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9SRUFMTT1SZWdpc3RyeQogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSD0vYXV0aC9yZWdpc3RyeS5wYXNzd29yZAogICAgICAtIFJFR0lTVFJZX1NUT1JBR0VfRklMRVNZU1RFTV9ST09URElSRUNUT1JZPS9kYXRhCiAgICBjb21tYW5kOgogICAgICAtIC9lbnRyeXBvaW50LnNoCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvdXNyL2Jpbi9lbnYgc2hcbnNldCAtZSBcblxuaWYgWyAteiBcIiRVU0VSTkFNRVwiIF0gfHwgWyAteiBcIiRQQVNTV09SRFwiIF07IHRoZW5cbiAgICBlY2hvIFwiRXJyb3I6IFVTRVJOQU1FIGFuZCBQQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzZXRcIlxuICAgIGV4aXQgMVxuZmlcblxuYXBrIGFkZCAtLW5vLWNhY2hlIGFwYWNoZTItdXRpbHNcbm1rZGlyIC1wIFwiJChkaXJuYW1lIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiKVwiXG5jaG1vZCA3NTUgXCIkKGRpcm5hbWUgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIpXCJcbmh0cGFzc3dkIC1CYmMgXCIkUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIXCIgXCIkVVNFUk5BTUVcIiBcIiRQQVNTV09SRFwiXG5yZWdpc3RyeSBzZXJ2ZSAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9jb25maWcueW1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL2RvY2tlci9yZWdpc3RyeS9jb25maWcueW1sCiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlCiAgICAgICAgY29udGVudDogInZlcnNpb246IDAuMVxubG9nOlxuICBmaWVsZHM6XG4gICAgc2VydmljZTogcmVnaXN0cnlcbnN0b3JhZ2U6XG4gIGNhY2hlOlxuICAgIGJsb2JkZXNjcmlwdG9yOiBpbm1lbW9yeVxuICBmaWxlc3lzdGVtOlxuICAgIHJvb3RkaXJlY3Rvcnk6IC92YXIvbGliL3JlZ2lzdHJ5XG5odHRwOlxuICBhZGRyOiA6NTAwMFxuICBoZWFkZXJzOlxuICAgIFgtQ29udGVudC1UeXBlLU9wdGlvbnM6IFtub3NuaWZmXVxuaGVhbHRoOlxuICBzdG9yYWdlZHJpdmVyOlxuICAgIGVuYWJsZWQ6IHRydWVcbiAgICBpbnRlcnZhbDogMTBzXG4gICAgdGhyZXNob2xkOiAzIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9kYXRhCiAgICAgICAgdGFyZ2V0OiAvZGF0YQogICAgICAgIGlzRGlyZWN0b3J5OiB0cnVlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
"tags": [
"registry",
"images",
Expand Down
4 changes: 2 additions & 2 deletions templates/service-templates.json
Original file line number Diff line number Diff line change
Expand Up @@ -725,9 +725,9 @@
"minversion": "0.0.0"
},
"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.",
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUkVHSVNUUllfNTAwMAogICAgICAtIFJFR0lTVFJZX0FVVEg9aHRwYXNzd2QKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1JFQUxNPVJlZ2lzdHJ5CiAgICAgIC0gUkVHSVNUUllfQVVUSF9IVFBBU1NXRF9QQVRIPS9hdXRoL3JlZ2lzdHJ5LnBhc3N3b3JkCiAgICAgIC0gUkVHSVNUUllfU1RPUkFHRV9GSUxFU1lTVEVNX1JPT1RESVJFQ1RPUlk9L2RhdGEKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgICB0YXJnZXQ6IC9hdXRoL3JlZ2lzdHJ5LnBhc3N3b3JkCiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlCiAgICAgICAgY29udGVudDogJ3Rlc3R1c2VyOiQyeSQwNSQvbzJKdm1JMmJoRXhYSXQ2T3F4YTdla1lCN3Yzc2NqMXdGRWY2dEJzbEp2Sk9Nb1BRTC5HeScKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vY29uZmlnL2NvbmZpZy55bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvZG9ja2VyL3JlZ2lzdHJ5L2NvbmZpZy55bWwKICAgICAgICBpc0RpcmVjdG9yeTogZmFsc2UKICAgICAgICBjb250ZW50OiAidmVyc2lvbjogMC4xXG5sb2c6XG4gIGZpZWxkczpcbiAgICBzZXJ2aWNlOiByZWdpc3RyeVxuc3RvcmFnZTpcbiAgY2FjaGU6XG4gICAgYmxvYmRlc2NyaXB0b3I6IGlubWVtb3J5XG4gIGZpbGVzeXN0ZW06XG4gICAgcm9vdGRpcmVjdG9yeTogL3Zhci9saWIvcmVnaXN0cnlcbmh0dHA6XG4gIGFkZHI6IDo1MDAwXG4gIGhlYWRlcnM6XG4gICAgWC1Db250ZW50LVR5cGUtT3B0aW9uczogW25vc25pZmZdXG5oZWFsdGg6XG4gIHN0b3JhZ2Vkcml2ZXI6XG4gICAgZW5hYmxlZDogdHJ1ZVxuICAgIGludGVydmFsOiAxMHNcbiAgICB0aHJlc2hvbGQ6IDMiCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2RhdGEKICAgICAgICB0YXJnZXQ6IC9kYXRhCiAgICAgICAgaXNEaXJlY3Rvcnk6IHRydWUK",
"compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUkVHSVNUUllfNTAwMAogICAgICAtICdVU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9SRUdJU1RSWX0nCiAgICAgIC0gJ1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9SRUdJU1RSWX0nCiAgICAgIC0gUkVHSVNUUllfQVVUSD1odHBhc3N3ZAogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUkVBTE09UmVnaXN0cnkKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEg9L2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgLSBSRUdJU1RSWV9TVE9SQUdFX0ZJTEVTWVNURU1fUk9PVERJUkVDVE9SWT0vZGF0YQogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZXRjL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgbW9kZTogJzA3NTUnCiAgICAgICAgY29udGVudDogIiMhL3Vzci9iaW4vZW52IHNoXG5zZXQgLWUgXG5cbmlmIFsgLXogXCIkVVNFUk5BTUVcIiBdIHx8IFsgLXogXCIkUEFTU1dPUkRcIiBdOyB0aGVuXG4gICAgZWNobyBcIkVycm9yOiBVU0VSTkFNRSBhbmQgUEFTU1dPUkQgZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgc2V0XCJcbiAgICBleGl0IDFcbmZpXG5cbmFwayBhZGQgLS1uby1jYWNoZSBhcGFjaGUyLXV0aWxzXG5ta2RpciAtcCBcIiQoZGlybmFtZSBcIiRSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEhcIilcIlxuY2htb2QgNzU1IFwiJChkaXJuYW1lIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiKVwiXG5odHBhc3N3ZCAtQmJjIFwiJFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUEFUSFwiIFwiJFVTRVJOQU1FXCIgXCIkUEFTU1dPUkRcIlxucmVnaXN0cnkgc2VydmUgL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbFxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAwLjFcbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogMyIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZGF0YQogICAgICAgIHRhcmdldDogL2RhdGEKICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjUwMDAvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"registry",
"images",
Expand Down