### Database (./apps/database/docker-compose.yml) # - [ ] Create a MariaDB service # - [ ] Configure volumes for persistent storage of database data secrets: mariadb_root: file: ${ROOT_DIR:-../..}/env/secrets.env services: database: secrets: - mariadb_root profiles: ["all", "database", "backend", "app"] image: mariadb:latest container_name: ${INFRASTRUCTURE_LABEL:-default}-mariadb-${ENVIRONMENT:-development} command: --bind-address=0.0.0.0 env_file: - ../../env/${ENVIRONMENT:-development}/.env.database volumes: - backend_mariadb_data:/var/lib/mysql - ./healthcheck.sh:/usr/local/bin/healthcheck.sh networks: - backend - database healthcheck: test: ["CMD", "bash", "/usr/local/bin/healthcheck.sh"] interval: 1s retries: 3 adminer: profiles: ["all", "database", "backend", "adminer", "app"] image: adminer container_name: ${INFRASTRUCTURE_LABEL:-default}-adminer-${ENVIRONMENT:-development} restart: always ports: - ${ADMINER_PORT:-0}:8080 networks: - database - proxy labels: - "traefik.enable=true" - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.entrypoints=websecure" - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.rule=Host(`${ADMINER_DOMAIN}`)" - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls=true" - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls.certresolver=http_resolver" - 'traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.service=adminer' - "traefik.http.adminer.cloud.loadbalancer.server.port=8080" - "traefik.docker.network=${TRAEFIK_NETWORK:-default}" # TODO: ADMINER IS NOT PREPARED FOR TRAEFIK networks: backend: name: ${INFRASTRUCTURE_LABEL:-default}-backend-${ENVIRONMENT:-development} database: name: ${INFRASTRUCTURE_LABEL:-default}-database-${ENVIRONMENT:-development} volumes: backend_mariadb_data: driver: local name: ${INFRASTRUCTURE_LABEL:-default}_mariadb_${ENVIRONMENT:-development}