services: app: environment: DATABASE_DIALECT: {{ database_dialect }} {% if database_dialect == "postgresql" %} POSTGRES_HOST: db POSTGRES_PORT: 5432 {% else %} MYSQL_HOST: db MYSQL_PORT: 3306 {% endif %} depends_on: db: condition: service_healthy db: {% if database_dialect == "postgresql" %} image: postgres:16 environment: POSTGRES_DB: ${POSTGRES_DB:-app} POSTGRES_USER: ${POSTGRES_USER:-app} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me} ports: - "${POSTGRES_PORT:-5432}:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 10 {% else %} image: mysql:8.4 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root-password} MYSQL_DATABASE: ${MYSQL_DATABASE:-app} MYSQL_USER: ${MYSQL_USER:-app} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-change-me} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci ports: - "${MYSQL_PORT:-3306}:3306" volumes: - mysql-data:/var/lib/mysql healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u$${MYSQL_USER} -p$${MYSQL_PASSWORD} --silent"] interval: 10s timeout: 5s retries: 10 {% endif %} volumes: {% if database_dialect == "postgresql" %} postgres-data: {% else %} mysql-data: {% endif %}