113 lines
2.3 KiB
YAML
113 lines
2.3 KiB
YAML
|
|
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
|