version: '3.8' services: mysql: image: mysql:8.0 container_name: classworks_mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-classworks} MYSQL_DATABASE: ${MYSQL_DATABASE:-classworks} MYSQL_USER: ${MYSQL_USER:-classworks} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-classworks} TZ: Asia/Shanghai ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql - ./mysql/conf.d:/etc/mysql/conf.d:ro - ./mysql/initdb.d:/docker-entrypoint-initdb.d:ro command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --default-authentication-plugin=mysql_native_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u$$MYSQL_USER", "-p$$MYSQL_PASSWORD"] interval: 10s timeout: 5s retries: 5 networks: - classworks_net postgres: image: postgres:15-alpine container_name: classworks_postgres restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-classworks} POSTGRES_USER: ${POSTGRES_USER:-classworks} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-classworks} TZ: Asia/Shanghai ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./postgres/initdb.d:/docker-entrypoint-initdb.d:ro command: - "postgres" - "-c" - "max_connections=100" - "-c" - "shared_buffers=128MB" healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 10s timeout: 5s retries: 5 networks: - classworks_net volumes: mysql_data: name: classworks_mysql_data postgres_data: name: classworks_postgres_data networks: classworks_net: name: classworks_network driver: bridge