112 lines
2.9 KiB
YAML
112 lines
2.9 KiB
YAML
name: smart-parking-platform
|
|
|
|
services:
|
|
mysql:
|
|
image: mysql:8.0
|
|
container_name: smart-parking-mysql
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-smart_parking}
|
|
MYSQL_USER: ${MYSQL_USER:-parking}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-parking123}
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123}
|
|
TZ: Asia/Shanghai
|
|
command:
|
|
- --character-set-server=utf8mb4
|
|
- --collation-server=utf8mb4_unicode_ci
|
|
ports:
|
|
- "${MYSQL_PORT:-4012}:3306"
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root123}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
networks:
|
|
- parking-net
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: front-backend.Dockerfile
|
|
container_name: smart-parking-app
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
environment:
|
|
MYSQL_HOST: mysql
|
|
MYSQL_PORT: 3306
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-smart_parking}
|
|
MYSQL_USER: ${MYSQL_USER:-parking}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-parking123}
|
|
JWT_SECRET: ${JWT_SECRET:-smart-parking-secret}
|
|
JWT_EXPIRES_IN: 30d
|
|
PUBLIC_DIR_ABSOLUTE_PATH: /var/www/html/public
|
|
TZ: Asia/Shanghai
|
|
ports:
|
|
- "${APP_PORT:-4010}:80"
|
|
- "${RTMP_PORT:-4015}:1515"
|
|
volumes:
|
|
- public-data:/var/www/html/public
|
|
- hls-data:/dev/shm/nginx-live
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost/"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 40s
|
|
networks:
|
|
- parking-net
|
|
|
|
device-simulator:
|
|
image: smart-parking-device-simulator:latest
|
|
build:
|
|
context: .
|
|
dockerfile: simulator.Dockerfile
|
|
container_name: smart-parking-device-simulator
|
|
restart: unless-stopped
|
|
depends_on:
|
|
app:
|
|
condition: service_healthy
|
|
environment:
|
|
HTTP_SERVER_URL: http://app
|
|
RTMP_SERVER_URL: rtmp://app:1515/live
|
|
ADMIN_USERNAME: ${AI_ADMIN_USERNAME:-admin}
|
|
ADMIN_PASSWORD: ${AI_ADMIN_PASSWORD:-admin123}
|
|
CAMERA_IDS: ${SIM_CAMERA_IDS:-1,2,3,4,5,6,7,8,9,10,11,12}
|
|
ASSETS_DIR: /assets
|
|
TZ: Asia/Shanghai
|
|
networks:
|
|
- parking-net
|
|
|
|
ai-end:
|
|
profiles: ["ai"]
|
|
build:
|
|
context: .
|
|
dockerfile: ai-end.Dockerfile
|
|
container_name: smart-parking-ai-end
|
|
restart: unless-stopped
|
|
depends_on:
|
|
app:
|
|
condition: service_healthy
|
|
environment:
|
|
HTTP_SERVER_URL: http://app
|
|
RTMP_SERVER_URL: rtmp://app:1515/live
|
|
ADMIN_USERNAME: ${AI_ADMIN_USERNAME:-admin}
|
|
ADMIN_PASSWORD: ${AI_ADMIN_PASSWORD:-admin123}
|
|
DETECTION_INTERVAL: "0.5"
|
|
MODEL_DEVICE: cpu
|
|
TZ: Asia/Shanghai
|
|
networks:
|
|
- parking-net
|
|
|
|
volumes:
|
|
mysql-data:
|
|
public-data:
|
|
hls-data:
|
|
|
|
networks:
|
|
parking-net:
|
|
driver: bridge |