From 98e7fb62d50aef6f5b10ee77c0cce5c1f8f19f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Wed, 16 Apr 2025 10:19:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(docker):=20=E6=9B=B4=E6=96=B0=20MySQL=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 8 ++++---- docker-compose.yml | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 547ff66..8c9bedc 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,8 @@ # MySQL数据库配置 -MYSQL_HOST= -MYSQL_PORT= -MYSQL_USER= -MYSQL_PASSWORD= +MYSQL_HOST=gemini-balance-mysql +MYSQL_PORT=3306 +MYSQL_USER=gemini +MYSQL_PASSWORD=change_me MYSQL_DATABASE=default_db API_KEYS=["AIzaSyxxxxxxxxxxxxxxxxxxx","AIzaSyxxxxxxxxxxxxxxxxxxx"] ALLOWED_TOKENS=["sk-123456"] diff --git a/docker-compose.yml b/docker-compose.yml index 965b3fa..56ab302 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,40 @@ -version: '3' - +volumes: + mysql_data: services: gemini-balance: + image: ghcr.io/snailyp/gemini-balance:latest + container_name: gemini-balance + restart: unless-stopped build: . ports: - "8000:8000" env_file: - .env + depends_on: + mysql: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "python -c \"import requests; exit(0) if requests.get('http://localhost:8000/health').status_code == 200 else exit(1)\""] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s + mysql: + image: mysql:8 + container_name: gemini-balance-mysql + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: your_root_password + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + # ports: + # - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"] + interval: 10s # 每隔10秒检查一次 + timeout: 5s # 每次检查的超时时间为5秒 + retries: 3 # 重试3次失败后标记为 unhealthy + start_period: 30s # 容器启动后等待30秒再开始第一次健康检查 \ No newline at end of file