You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/copier-template/docker-compose.with-db.yml....

59 lines
1.5 KiB
Django/Jinja

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 %}