Files
coolify-examples/shopware6/docker-compose.yaml
2025-12-13 20:06:52 +01:00

119 lines
6.2 KiB
YAML

x-environment: &shopware
environment:
APP_ENV: "${APP_ENV}"
DATABASE_URL: "${DATABASE_URL}"
DATABASE_HOST: "${DATABASE_HOST}"
APP_URL: "${APP_URL}"
APP_SECRET: "${APP_SECRET}"
JWT_PRIVATE_KEY: "${JWT_PRIVATE_KEY}"
JWT_PUBLIC_KEY: "${JWT_PUBLIC_KEY}"
PHP_SESSION_HANDLER: "${PHP_SESSION_HANDLER}"
PHP_SESSION_SAVE_PATH: "${PHP_SESSION_SAVE_PATH}"
volumes:
- files:/var/www/html/files
- theme:/var/www/html/public/theme
- media:/var/www/html/public/media
- thumbnail:/var/www/html/public/thumbnail
- sitemap:/var/www/html/public/sitemap
services:
web:
image: shopware6
<<: *shopware
build:
context: .
depends_on:
init:
condition: service_completed_successfully
environment:
SERVICE_URL_WEB_8000:
APP_ENV: "${APP_ENV:-prod}"
DATABASE_URL: "${DATABASE_URL:-mysql://shopware:shopware@database/shopware}"
DATABASE_HOST: "${DATABASE_HOST:-database}"
APP_URL: "${APP_URL:-$SERVICE_URL_WEB}"
APP_SECRET: "${APP_SECRET:-b15bed7d8d3ccecf7b13fb0822f4fc6d}"
JWT_PRIVATE_KEY: "${JWT_PRIVATE_KEY:-LS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGSERCT0Jna3Foa2lHOXcwQkJRMHdRVEFwQmdrcWhraUc5dzBCQlF3d0hBUUlFOE5rWmE0ck1PVUNBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3RkFZSUtvWklodmNOQXdjRUNQeHVabVIrWWV6QUJJSUV5QVVPM0pBcjV5K0QKTDRvTzRGM0JlL1Z1Slp5QlRPRFdQcU1BNzZ2SUF4K3lDUmZBTVIxRWw4MlNwRUdiSUZVSTA0VTRqUERTeER6aAoxd2dkemQyZHJSMjl2UCtKdjl3ekhjbDBib3g1dnd0ZmFxdEdFcjg0UnQ5aTl5aHpINkJ3MnZMQ21NQVNac0pPCjVrNEdERnhSTDhudWxTVXZtcjA1RUNnVEdQMndraXMzRThtRTU0Q3UrSlpLVzFwN0lkcmdJd3BSSWwwNUhLWVAKSFRGbGJaNURpb3dFelF3Qm42K25TbE40OUJneE1ZM1cxdkhrWTRDaVdZNUJTOENYcHoweGRvNnBzSTRuZ2dpLwpId2xBTVpDVGQvdFZnMW5VMkdRcGNRTkpPZm1TSW0xcWlNeGpSbE5iV2tIbmMvMkwya3AveWs5cFo4aTIwTFhrCnYxZHVHNUZvclRsL1JyNnE0SWtBV1FNbUZUcDdNanpzbmozMDB3SkcwTDREUDFXQTN4VVNKbDQ2SlRVZU9IcncKbEJxZ2xZQ0tPaFVWMFRmdW9scGNrYjcwQXduZm9wSXV0eXpuS0FJYjRFMUJXY25mN3U0K0VrME5pbEdlbXdodQorWmlSaDZGakptM3ROQ0VBWFhVbGVVRVV2eUFpK1VqQXlUMXh0VFFURTdaaXpoa3JBSHlFbHEvR0ZFQ0JOOHVlCjFSV05IYW5zbEl5RnlySk5XcGw3S0lFM09NMnZTbERaRkx3cUVIbkZnYTZza05pZEVtTW1EL2o1Ny9kMkJNeDAKWFVJRXNadFY4S2Q5aDJ0eFdwR0Y4MEZqNHF0cDVud0s3ajd4MUtxa1cwM041aGtrZVZzSm5DRko2U3ZnS0x1ZAp2ZnV3bjVoc3NBZlhLK0tQU1NJYlNaMSs4V0c3dm5MbDVqZ0NuMUVuVHBLVDFPNGRoMXBRVE1hR0EvU0FyVFJxCldTcUZqbFZkbjdaNEVnckVuN0p4bTQxNGptenJCMVBFNUhrYVZnWWs2S3ByNk8yWW9TVDUvSlJhU1ZQVHpJeGYKNit6R09ONk5NMXdzbHRXQk5zUUxWc3NoWHNVVXlzeWtCZXN0b0RWRGtYdE1ZS1dmdlorVFRndzlQUVNzQVU5cQo4dlZvMXZNNXpIV1VuWVhlZitJbmJHcEdpOEJ4cmlKMkVhNFN3YjBUWEJITngvZDR1U281c2dXVXFvcVRRTENsCjNNS1Q3aWpGRFZJQ3VkelI2elU4cDJhbWdjU3RBQlAwbWpsQ2ZrckhtRGFOdExYdEJ0ZWJVK0VPYzVFSHRTTlkKZ0lWSStORUl1bjlRVllaYm1RbGRhU3lhTGpkWi92cndhdWcvV1FmZjVuS2NnanhOd2N4Nlc4UXNyajBOWFVmUgpWTGQ4NzZPRDdnT3hRVElMdGF1cW5DYkxDcWlLN2YrUWRuM0M3ekhuL2t2SEdZWVIvcTZXOWF6MVZ2NC9YMDRqCjFLRDVZazRWa2ZEVVZEdjZIVXRZR2ZJeCt3SWllS1NKMFhRbnh5MGJPb0FrbGRyRkxmazhCL1lEVlRaZ3ZoMzEKSUF6VzV2WXczaVM3ZTZ1a0RYNEdoYldEQVg4cDJ0VmRyUGZiWklLMC9zSlFwOUMxbU1uMDI4d3VFUm1vOURHeQpPNnNHN1phdjhJKytkMktrcWYvbzMzU2VIYVVCN2dvRlZtaS9jSGprQngzVVplQ1ByNDRvNENZTjg1RzdJSWFFCmxVa2NqNmFwN2lZUXFOOFVXMC9Rb1NoUXVxK1NZdnRjRWNXY0VUYlBCOElPZXUxa1BvTExPYzdPQ3ZRMlBqcXoKSkpWUGdIRWZJYzVJWldWMXg0MUplMXZWYmM1dGlhNUY2eFB3cWNteDJROEhMOWJiUDc5NHJUU3I5NkZBTnJXbwowMjZaV1VHMlNxbHZWTll4WjkzUWxka2pSaGM2Nm5obEFrdHBlYnJ4N05JQXgxaFhsRHpDaDRvOTF2M3pFUXZtClFQbUVodHZUNTZDZWNaTGprWTdaNVNteTgvbkJPUUdidS9HSjRlcnZqL0M1dzJ2ZlZlL3AzcGo2K3lXeldtZkoKTm5ZL09mMkVlYmlhMmpIcVlpdHlwWEtZSWREclErZVVJQzI2VG1LRkRXKzBMcndOc0gwRFBWOTFWQm5Bd0pQZwpBTnEwdVBGMUlkSUszcjdUMGp2L1RnPT0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0K}"
JWT_PUBLIC_KEY: "${JWT_PUBLIC_KEY:-LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1NWR5RTFPSzc3V3ZJUnIxcWd5MQpUbjJ3ZVFNREhxSHZqV0JGeE1XbEV6eW14YmpVZzYyT1hpL01SditCRnp0a2JCTVQ3aWtpOHdPdXlJZFBCTVBHCmkrcm15anhIT2I0WEJXdTAyNTdxOWg0UTJYemdyUVZsYjY5MG04SVRTY2hKUVBCc2Z6NnVIWjd3b1VQYXZXTG4KMldybHNIUmQ0S2wwNnpIdzVNelE2bVlqeDI5L2NINkNrbjNNcXVNQW9qTEE4alJLSGVxQ05OSUh2cnkwRnByUQoyaG5VUDdMZThlbU1FeUJtTzBGeHoyYVdsVEo4d3FmVDdMRUYyNVJOaERoNyswc3JJSC9RcnlpRHhVZnBvZTBpCkNLNUVpZVdHMXloeXhMMUZJU2JTVmIvRGZaWHo3NGYzMWp0VWpEaVJuWjF2U0UxNDNGKzdUaFV3alBra0pYcVEKQlFJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==}"
PHP_SESSION_HANDLER: "${PHP_SESSION_HANDLER:-redis}"
PHP_SESSION_SAVE_PATH: "${PHP_SESSION_SAVE_PATH:-tcp://cache:6379/1}"
healthcheck:
test:
["CMD", "curl", "-f", "http://localhost:8000/api/_info/health-check"]
interval: 30s
timeout: 10s
retries: 5
database:
image: mariadb:11.4
environment:
MARIADB_ROOT_PASSWORD: "${MARIADB_ROOT_PASSWORD:-shopware}"
MARIADB_USER: "${MARIADB_USER:-shopware}"
MARIADB_PASSWORD: "${MARIADB_PASSWORD:-shopware}"
MARIADB_DATABASE: "${MARIADB_DATABASE:-shopware}"
tmpfs:
- /var/lib/mysql
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-pshopware"]
timeout: 20s
retries: 10
init-perm:
image: alpine
<<: *shopware
command: chown 82:82 /var/www/html/files /var/www/html/public/theme /var/www/html/public/media /var/www/html/public/thumbnail /var/www/html/public/sitemap
restart: "no"
exclude_from_hc: true
init:
image: shopware6
<<: *shopware
build:
context: .
entrypoint: ["php", "vendor/bin/shopware-deployment-helper", "run"]
restart: "no"
exclude_from_hc: true
depends_on:
database:
condition: service_healthy
init-perm:
condition: service_completed_successfully
worker-1: &worker
image: shopware6
<<: *shopware
build:
context: .
exclude_from_hc: true
volumes_from:
- init
depends_on:
init:
condition: service_completed_successfully
entrypoint:
[
"php",
"bin/console",
"messenger:consume",
"async",
"low_priority",
"--time-limit=300",
"--memory-limit=512M",
]
worker-2: *worker
scheduled-task:
image: shopware6
<<: *shopware
build:
context: .
volumes_from:
- init
depends_on:
init:
condition: service_completed_successfully
entrypoint: ["php", "bin/console", "scheduled-task:run"]
exclude_from_hc: true
cache:
image: valkey/valkey:latest