# 本地开发依赖的外部组件。只起 MySQL——应用本身用 ./gradlew :bootstrap:bootRun 在 IDE/命令行里跑, # 这样断点和热重载都还在。 # # docker compose up -d mysql # SPRING_PROFILES_ACTIVE=local ./gradlew :bootstrap:bootRun # # 这里的账号密码跟 application-local.yml 对齐,都是假值,不是任何环境的真实凭证。 services: mysql: image: mysql:8.4 container_name: conti-mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root_local_password MYSQL_USER: conti MYSQL_PASSWORD: conti_local_password command: # 字符集跟 UAT/Prod 的 Azure Flexible Server 对齐:8.0 之后的默认排序规则是 # utf8mb4_0900_ai_ci,本地用别的会出现"本地大小写敏感、线上不敏感"这类差异。 - --character-set-server=utf8mb4 - --collation-server=utf8mb4_0900_ai_ci # 应用侧全用 UTC Instant 存取(见 03-persistence.md),服务端时区也钉成 UTC - --default-time-zone=+00:00 volumes: - conti-mysql-data:/var/lib/mysql # 一个 domain 一个 database,Flyway 起来之前这几个库得先存在(见 DomainFlywayConfig) - ./docker/mysql/init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-proot_local_password"] interval: 5s timeout: 3s retries: 20 volumes: conti-mysql-data: