Error Message and Logs
I'm trying to POST a new docker compose app using the api endpoint, to myself hosting tenant on v4.0.0-beta.380
/api/v1/applications/dockercompose
But it fails with error:
422 - "{\"message\":\"Validation failed.\",\"errors\":{\"docker_compose_raw\":\"The docker_compose_raw should be base64 encoded.\"}}"
This is my request:
{ "body": { "project_uuid": "wgwososgk0o4ck<...>", "server_uuid": "eg44gwg48wocww<...>", "environment_name": "production", "instant_deploy": "false", "destination_uuid": "localhost-rsg04s8wkgoc<...>", "docker_compose_raw": "dmVyc2lvbjogJzMuOCcKc2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3BndmVjdG9yL3BndmVjdG9yOnBnMTYnCiAgICBjb250YWluZXJfbmFtZTogcG9zdGdyZXNfZGIKICAgIHBvcnRzOgogICAgICAtICc1NDMyOjU0MzInCiAgICByZXN0YXJ0OiBhbHdheXMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgICAgLSAnLVUnCiAgICAgICAgLSBwb3N0Z3JlcwogICAgZW52aXJvbm1lbnQ6CiAgICAgICMgTm9tYnJlIGRlIGxhIGJhc2UgZGUgZGF0b3MgcXVlIGRlc2VlcyAoYXF1w60gbG8gZGVqYW1vcyBmaWpvIGNvbW8gImFwaSIpLgogICAgICBQT1NUR1JFU19EQjogYXBpCiAgICAgIAogICAgICAjIFVzdWFyaW8geSBjb250cmFzZcOxYSBnZW5lcmFkb3MgYXV0b23DoXRpY2FtZW50ZSBwb3IgQ29vbGlmeQogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX0RCCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9EQgoKICAgIHZvbHVtZXM6CiAgICAgIC0gJy4vaW5pdC5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2luaXQuc3FsJwogICAgICAtICdkYl9kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKCiAgcGdib3VuY2VyOgogICAgY29udGFpbmVyX25hbWU6IHBnYm91bmNlcgogICAgaW1hZ2U6ICdiaXRuYW1pL3BnYm91bmNlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgIyBSZXV0aWxpemFtb3MgbGFzIG1pc21hcyB2YXJpYWJsZXMgcGFyYSBwZ2JvdW5jZXIKICAgICAgLSBQT1NUR1JFU1FMX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfREIKICAgICAgLSBQT1NUR1JFU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX0RCCiAgICAgIC0gUE9TVEdSRVNRTF9IT1NUPWRiCiAgICAgIC0gUEdCT1VOQ0VSX0RBVEFCQVNFPWFwaQogICAgICAtIFBPU1RHUkVTUUxfUE9SVD01NDMyCgogICAgICAtIFBPT0xfTU9ERT10cmFuc2FjdGlvbgogICAgICAtIEFETUlOX1VTRVJTPSRTRVJWSUNFX1VTRVJfREIsZGJ1c2VyCiAgICAgIC0gUEdCT1VOQ0VSX1BPT0xfTU9ERT10cmFuc2FjdGlvbgogICAgICAtIFBHQk9VTkNFUl9NQVhfQ0xJRU5UX0NPTk49MTAwMAogICAgICAtIFBHQk9VTkNFUl9NQVhfREJfQ09OTkVDVElPTlM9MjAwCiAgICAgIC0gUEdCT1VOQ0VSX0RFRkFVTFRfUE9PTF9TSVpFPTIwCiAgICAgIC0gUEdCT1VOQ0VSX1JFU0VSVkVfUE9PTF9TSVpFPTIwCiAgICAgIC0gUEdCT1VOQ0VSX1JFU0VSVkVfUE9PTF9USU1FT1VUPTUKICAgICAgLSBQR0JPVU5DRVJfUVVFUllfV0FJVF9USU1FT1VUPTYwCiAgICAgIC0gUEdCT1VOQ0VSX0lETEVfVFJBTlNBQ1RJT05fVElNRU9VVD0zMAoKICAgIHBvcnRzOgogICAgICAtICc2NDMyOjY0MzInCiAgICBkZXBlbmRzX29uOgogICAgICAtIGRiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1oJwogICAgICAgIC0gbG9jYWxob3N0Cgp2b2x1bWVzOgogIGRiX2RhdGE6CiAgICBkcml2ZXI6IGxvY2FsCg==" }, "headers": { "Authorization": "**hidden**", "accept": "application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7" }, "method": "POST", "uri": "https://<my-tenant>.com/api/v1/applications/dockercompose", "gzip": true, "rejectUnauthorized": true, "followRedirect": true, "resolveWithFullResponse": true, "followAllRedirects": true, "timeout": 300000, "encoding": null, "json": false, "useStream": true }
This is the decoded docker compose
version: '3.8'
services:
db:
image: 'pgvector/pgvector:pg16'
container_name: postgres_db
ports:
- '5432:5432'
restart: always
healthcheck:
test:
- CMD
- pg_isready
- '-U'
- postgres
environment:
# Nombre de la base de datos que desees (aquí lo dejamos fijo como "api").
POSTGRES_DB: api
# Usuario y contraseña generados automáticamente por Coolify
POSTGRES_USER: $SERVICE_USER_DB
POSTGRES_PASSWORD: $SERVICE_PASSWORD_DB
volumes:
- './init.sql:/docker-entrypoint-initdb.d/init.sql'
- 'db_data:/var/lib/postgresql/data'
pgbouncer:
container_name: pgbouncer
image: 'bitnami/pgbouncer:latest'
environment:
# Reutilizamos las mismas variables para pgbouncer
- POSTGRESQL_USERNAME=$SERVICE_USER_DB
- POSTGRESQL_PASSWORD=$SERVICE_PASSWORD_DB
- POSTGRESQL_HOST=db
- PGBOUNCER_DATABASE=api
- POSTGRESQL_PORT=5432
- POOL_MODE=transaction
- ADMIN_USERS=$SERVICE_USER_DB,dbuser
- PGBOUNCER_POOL_MODE=transaction
- PGBOUNCER_MAX_CLIENT_CONN=1000
- PGBOUNCER_MAX_DB_CONNECTIONS=200
- PGBOUNCER_DEFAULT_POOL_SIZE=20
- PGBOUNCER_RESERVE_POOL_SIZE=20
- PGBOUNCER_RESERVE_POOL_TIMEOUT=5
- PGBOUNCER_QUERY_WAIT_TIMEOUT=60
- PGBOUNCER_IDLE_TRANSACTION_TIMEOUT=30
ports:
- '6432:6432'
depends_on:
- db
healthcheck:
test:
- CMD
- pg_isready
- '-h'
- localhost
volumes:
db_data:
driver: local
And this is the base64 encoded docker_compose_raw field:
dmVyc2lvbjogJzMuOCcKc2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3BndmVjdG9yL3BndmVjdG9yOnBnMTYnCiAgICBjb250YWluZXJfbmFtZTogcG9zdGdyZXNfZGIKICAgIHBvcnRzOgogICAgICAtICc1NDMyOjU0MzInCiAgICByZXN0YXJ0OiBhbHdheXMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgICAgLSAnLVUnCiAgICAgICAgLSBwb3N0Z3JlcwogICAgZW52aXJvbm1lbnQ6CiAgICAgICMgTm9tYnJlIGRlIGxhIGJhc2UgZGUgZGF0b3MgcXVlIGRlc2VlcyAoYXF1w60gbG8gZGVqYW1vcyBmaWpvIGNvbW8gImFwaSIpLgogICAgICBQT1NUR1JFU19EQjogYXBpCiAgICAgIAogICAgICAjIFVzdWFyaW8geSBjb250cmFzZcOxYSBnZW5lcmFkb3MgYXV0b23DoXRpY2FtZW50ZSBwb3IgQ29vbGlmeQogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX0RCCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9EQgoKICAgIHZvbHVtZXM6CiAgICAgIC0gJy4vaW5pdC5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2luaXQuc3FsJwogICAgICAtICdkYl9kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKCiAgcGdib3VuY2VyOgogICAgY29udGFpbmVyX25hbWU6IHBnYm91bmNlcgogICAgaW1hZ2U6ICdiaXRuYW1pL3BnYm91bmNlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgIyBSZXV0aWxpemFtb3MgbGFzIG1pc21hcyB2YXJpYWJsZXMgcGFyYSBwZ2JvdW5jZXIKICAgICAgLSBQT1NUR1JFU1FMX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfREIKICAgICAgLSBQT1NUR1JFU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX0RCCiAgICAgIC0gUE9TVEdSRVNRTF9IT1NUPWRiCiAgICAgIC0gUEdCT1VOQ0VSX0RBVEFCQVNFPWFwaQogICAgICAtIFBPU1RHUkVTUUxfUE9SVD01NDMyCgogICAgICAtIFBPT0xfTU9ERT10cmFuc2FjdGlvbgogICAgICAtIEFETUlOX1VTRVJTPSRTRVJWSUNFX1VTRVJfREIsZGJ1c2VyCiAgICAgIC0gUEdCT1VOQ0VSX1BPT0xfTU9ERT10cmFuc2FjdGlvbgogICAgICAtIFBHQk9VTkNFUl9NQVhfQ0xJRU5UX0NPTk49MTAwMAogICAgICAtIFBHQk9VTkNFUl9NQVhfREJfQ09OTkVDVElPTlM9MjAwCiAgICAgIC0gUEdCT1VOQ0VSX0RFRkFVTFRfUE9PTF9TSVpFPTIwCiAgICAgIC0gUEdCT1VOQ0VSX1JFU0VSVkVfUE9PTF9TSVpFPTIwCiAgICAgIC0gUEdCT1VOQ0VSX1JFU0VSVkVfUE9PTF9USU1FT1VUPTUKICAgICAgLSBQR0JPVU5DRVJfUVVFUllfV0FJVF9USU1FT1VUPTYwCiAgICAgIC0gUEdCT1VOQ0VSX0lETEVfVFJBTlNBQ1RJT05fVElNRU9VVD0zMAoKICAgIHBvcnRzOgogICAgICAtICc2NDMyOjY0MzInCiAgICBkZXBlbmRzX29uOgogICAgICAtIGRiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1oJwogICAgICAgIC0gbG9jYWxob3N0Cgp2b2x1bWVzOgogIGRiX2RhdGE6CiAgICBkcml2ZXI6IGxvY2FsCg==
Steps to Reproduce
- send request to POST /api/v1/applications/dockercompose with base64 docker compose content
Example Repository URL
No response
Coolify Version
v4.0.0-beta.380
Are you using Coolify Cloud?
No (self-hosted)
Operating System and Version (self-hosted)
Ubuntu 22.04.5 LTS
Additional Information
No response
Error Message and Logs
I'm trying to POST a new docker compose app using the api endpoint, to myself hosting tenant on v4.0.0-beta.380
/api/v1/applications/dockercomposeBut it fails with error:
This is my request:
This is the decoded docker compose
And this is the base64 encoded docker_compose_raw field:
Steps to Reproduce
Example Repository URL
No response
Coolify Version
v4.0.0-beta.380
Are you using Coolify Cloud?
No (self-hosted)
Operating System and Version (self-hosted)
Ubuntu 22.04.5 LTS
Additional Information
No response