mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
145 lines
3.9 KiB
YAML
145 lines
3.9 KiB
YAML
# Reference compose for the application parser (Docker Compose build pack, applicationParser).
|
|
# Test-only: tests/Feature/ServiceParserReferenceTest.php parses it and compares the result
|
|
# with tests/Fixtures/parser/expected/application-*.yaml. Each service covers one group of parser features.
|
|
services:
|
|
# Domain from a magic variable with a port, all environment syntaxes, magic secrets, labels, volumes.
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
args:
|
|
- BUILD_VERSION=${BUILD_VERSION:-1.0.0}
|
|
environment:
|
|
- SERVICE_URL_WEB_3000
|
|
- LITERAL=plain-value
|
|
- BARE_PASSTHROUGH
|
|
- WITH_DEFAULT=${WITH_DEFAULT:-fallback}
|
|
- REQUIRED=${REQUIRED:?REQUIRED must be set}
|
|
- NO_BRACES=$NO_BRACES_VALUE
|
|
- NESTED=${NESTED_OUTER:-${NESTED_INNER:-inner-default}}
|
|
- NESTED_NO_DEFAULT=${NESTED_NO_DEFAULT_OUTER:-${NESTED_NO_DEFAULT_INNER}}
|
|
- DASH_DEFAULT=${DASH_DEFAULT_VAR-dash-default}
|
|
- NO_BRACES_DEFAULT=$NO_BRACES_DEFAULT_VAR:-no-braces-default
|
|
- NO_BRACES_MAGIC=$SERVICE_PASSWORD_NOBRACES
|
|
- SELF_REF=${SELF_REF}
|
|
- SHARED={{environment.SHARED_KEY}}
|
|
- PASSWORD=${SERVICE_PASSWORD_WEB}
|
|
- BASE64_64=${SERVICE_BASE64_64_WEB}
|
|
- HEX_32=${SERVICE_HEX_32_WEB}
|
|
- USER=${SERVICE_USER_WEB}
|
|
- API_URL=${SERVICE_URL_API}
|
|
labels:
|
|
com.example.team: platform
|
|
com.example.dollar: price-$5
|
|
volumes:
|
|
- web-data:/app/data
|
|
- ./config:/app/config:ro
|
|
- ./selinux:/app/selinux:z
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- type: bind
|
|
source: ./web-init.sh
|
|
target: /docker-entrypoint.d/init.sh
|
|
read_only: true
|
|
content: |
|
|
#!/bin/sh
|
|
echo "application reference fixture"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
|
|
# Path value with FQDN declaration, image only, ports, map-style environment.
|
|
api:
|
|
image: node:22-alpine
|
|
environment:
|
|
SERVICE_FQDN_API: /api
|
|
MAP_LITERAL: map-value
|
|
MAP_NULL:
|
|
# Empty value: filled from the stored variable (the preview variable for a pull request).
|
|
MAP_EMPTY_FROM_DATABASE: ''
|
|
ports:
|
|
- "3001:3001"
|
|
- target: 3002
|
|
published: 3002
|
|
protocol: tcp
|
|
expose:
|
|
- 3001
|
|
volumes:
|
|
- shared-external:/shared
|
|
- nfs-data:/mnt/nfs
|
|
|
|
# Hyphenated and dotted service names.
|
|
my-app:
|
|
image: httpd:2.4-alpine
|
|
environment:
|
|
- SERVICE_URL_MY_APP_80
|
|
api.v2:
|
|
image: traefik/whoami
|
|
|
|
# SERVICE_FQDN_ declaration with a port.
|
|
admin:
|
|
image: nginx:alpine
|
|
environment:
|
|
- SERVICE_FQDN_ADMIN_8080
|
|
networks:
|
|
internal:
|
|
ipv4_address: 172.30.0.10
|
|
|
|
# Ghost image with a path domain: extra redirect labels.
|
|
blog:
|
|
image: ghost:5-alpine
|
|
environment:
|
|
- SERVICE_URL_BLOG_2368=/blog
|
|
|
|
# Database image: no domain, no proxy labels.
|
|
db:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
- POSTGRES_USER=${SERVICE_USER_DB}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_DB}
|
|
- POSTGRES_DB=app
|
|
volumes:
|
|
- db-data:/var/lib/postgresql/data
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER}"]
|
|
interval: 5s
|
|
|
|
# restart "no", network_mode and a worker without a domain.
|
|
sidecar:
|
|
image: busybox
|
|
restart: "no"
|
|
network_mode: "service:web"
|
|
command: ["true"]
|
|
worker:
|
|
image: node:22-alpine
|
|
command: ["node", "worker.js"]
|
|
environment:
|
|
- APP_URL=${SERVICE_URL_WEB}
|
|
- APP_URL_WITH_PORT=${SERVICE_URL_WEB_3000}
|
|
- API_HOST=${SERVICE_FQDN_API}
|
|
depends_on:
|
|
- db
|
|
|
|
volumes:
|
|
web-data:
|
|
db-data:
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: /srv/db
|
|
shared-external:
|
|
external: true
|
|
nfs-data:
|
|
driver_opts:
|
|
type: nfs
|
|
o: addr=10.0.0.2,rw
|
|
device: ":/exports/data"
|
|
|
|
networks:
|
|
internal:
|
|
default:
|
|
aliased:
|
|
aliases:
|
|
- alias-name
|