Files
smart-parking-platform/docker-compose.yml
T

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