claude_sms_test
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 一条命令启动整套服务:MySQL 数据库 + FastAPI 应用
|
||||
#
|
||||
# 构建并启动:docker compose up -d --build
|
||||
# 初始化建表:docker compose exec app python init_db.py
|
||||
# 导入测试数据:docker compose exec app python init_test_data.py
|
||||
# 查看日志:docker compose logs -f app
|
||||
# 停止:docker compose down (加 -v 会连数据库数据一起删除)
|
||||
#
|
||||
services:
|
||||
# ---------- MySQL 数据库 ----------
|
||||
db:
|
||||
image: mysql:8.0
|
||||
container_name: sms_mysql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: "123456"
|
||||
MYSQL_DATABASE: "claude_sms_test" # 容器首次启动时自动创建该库
|
||||
TZ: Asia/Shanghai
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
ports:
|
||||
- "3307:3306" # 如需用本机客户端连接,可保留;不需要可删掉
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql # 数据持久化,容器删除数据也不丢
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 20
|
||||
|
||||
# ---------- FastAPI 应用 ----------
|
||||
app:
|
||||
build: .
|
||||
container_name: sms_app
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy # 等 MySQL 健康后再启动,避免连接失败
|
||||
environment:
|
||||
# 关键:容器之间用「服务名 db」通信,而不是 localhost
|
||||
DB_HOST: db
|
||||
DB_PORT: "3306"
|
||||
DB_USER: root
|
||||
DB_PASSWORD: "123456"
|
||||
DB_NAME: claude_sms_test
|
||||
SQL_ECHO: "false" # 生产环境关闭 SQL 日志
|
||||
ports:
|
||||
- "8002:8002"
|
||||
# 如需热更新调试,可挂载源码并开启 reload:
|
||||
# volumes: ["./:/app"]
|
||||
# command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002", "--reload"]
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
Reference in New Issue
Block a user