services: mysql: image: mysql:8.0 container_name: collab-ledger-mysql-server restart: always command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123} MYSQL_DATABASE: ${MYSQL_DATABASE:-collab_ledger} MYSQL_USER: ${MYSQL_APP_USERNAME:-collab_ledger_app} MYSQL_PASSWORD: ${MYSQL_APP_PASSWORD:-collab_ledger_app123} ports: - "${MYSQL_PORT:-3306}:3306" volumes: - collab_ledger_mysql_data:/var/lib/mysql - ./backend/sql/init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h localhost -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"] interval: 10s timeout: 5s retries: 10 start_period: 30s networks: - collab-ledger-network redis: image: redis:7.2-alpine container_name: collab-ledger-redis-server restart: always command: redis-server --requirepass ${REDIS_PASSWORD:-redis123} environment: REDIS_PASSWORD: ${REDIS_PASSWORD:-redis123} ports: - "${REDIS_PORT:-6379}:6379" volumes: - collab_ledger_redis_data:/data healthcheck: test: ["CMD-SHELL", "redis-cli -a $${REDIS_PASSWORD} ping | grep PONG"] interval: 10s timeout: 5s retries: 10 start_period: 10s networks: - collab-ledger-network volumes: collab_ledger_mysql_data: collab_ledger_redis_data: networks: collab-ledger-network: driver: bridge