Files
0451meishi/deploy/docker-compose.full.yml

113 lines
2.3 KiB
YAML
Raw Normal View History

2026-01-15 11:37:22 +08:00
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password123
ports:
- "3309:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- app-network
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"]
interval: 5s
timeout: 3s
retries: 30
start_period: 20s
redis:
image: redis:7.4.1
ports:
- "6381:6379"
volumes:
- redis_data:/data
networks:
- app-network
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 30
start_period: 5s
backend:
build:
context: ../backend
dockerfile: Dockerfile
env_file:
- ../backend/.env
environment:
DB_HOST: mysql
DB_PORT: "3306"
DB_NAME: mydb
DB_USER: user
DB_PASSWORD: password123
REDIS_ADDR: redis:6379
PUBLIC_BASE_URL: http://localhost:8080
ports:
- "8080:8080"
volumes:
- backend_uploads:/app/static/upload
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- app-network
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/healthz >/dev/null 2>&1 || exit 1"]
interval: 5s
timeout: 3s
retries: 30
start_period: 10s
admin:
build:
context: ../admin
dockerfile: Dockerfile
ports:
- "5173:80"
depends_on:
backend:
condition: service_healthy
networks:
- app-network
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/ >/dev/null 2>&1 || exit 1"]
interval: 10s
timeout: 3s
retries: 10
start_period: 10s
swagger:
image: swaggerapi/swagger-ui:latest
container_name: meishiditu-swagger
ports:
- "8081:8080"
environment:
SWAGGER_JSON: /openapi.yaml
volumes:
- ../docs/openapi.yaml:/openapi.yaml:ro
networks:
- app-network
depends_on:
- backend
volumes:
mysql_data:
redis_data:
backend_uploads:
networks:
app-network:
driver: bridge