Files
aitsc/docker-compose.yml

82 lines
1.7 KiB
YAML

version: '3.8'
services:
# Flask应用服务
app:
build: .
container_name: flask_prompt_master
ports:
- "5000:5000"
environment:
- FLASK_ENV=production
- DATABASE_URL=mysql+pymysql://root:password@db:3306/prompt_master?charset=utf8mb4
- REDIS_URL=redis://redis:6379/0
env_file:
- .env
volumes:
- ./logs:/app/logs
- ./uploads:/app/uploads
depends_on:
- db
- redis
restart: unless-stopped
networks:
- app-network
# MySQL数据库服务
db:
image: mysql:8.0
container_name: prompt_master_db
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: prompt_master
MYSQL_USER: prompt_user
MYSQL_PASSWORD: prompt_password
volumes:
- mysql_data:/var/lib/mysql
- ./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3306:3306"
restart: unless-stopped
networks:
- app-network
command: --default-authentication-plugin=mysql_native_password
# Redis缓存服务
redis:
image: redis:7-alpine
container_name: prompt_master_redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: unless-stopped
networks:
- app-network
command: redis-server --appendonly yes
# Nginx反向代理
nginx:
image: nginx:alpine
container_name: prompt_master_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./docker/nginx/ssl:/etc/nginx/ssl
- ./logs:/var/log/nginx
depends_on:
- app
restart: unless-stopped
networks:
- app-network
volumes:
mysql_data:
redis_data:
networks:
app-network:
driver: bridge