name: soondesign services: mysql: image: mysql:8.0 container_name: soondesign-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootlocal} MYSQL_DATABASE: ${MYSQL_DATABASE:-soondesign} MYSQL_USER: ${MYSQL_USER:-soondesign} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-soondesign} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci volumes: - soondesign_mysql_data:/var/lib/mysql - ../backend-web/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-rootlocal}"] interval: 5s timeout: 5s retries: 30 start_period: 30s api: image: php:8.2-cli-bookworm container_name: soondesign-api restart: unless-stopped ports: - "${BACKEND_PORT:-8102}:8080" environment: SOON_DB_HOST: mysql SOON_DB_PORT: 3306 SOON_DB_NAME: ${MYSQL_DATABASE:-soondesign} SOON_DB_USER: ${MYSQL_USER:-soondesign} SOON_DB_PASS: ${MYSQL_PASSWORD:-soondesign} SOON_DEV_ADMIN_EMAIL: ${SOON_DEV_ADMIN_EMAIL:-admin@local.test} SOON_DEV_ADMIN_PASS: ${SOON_DEV_ADMIN_PASS:-admin123} volumes: - ../backend-web:/var/www - ./config/local.php:/var/www/config/local.php:ro - ../soonModels:/var/soonModels - ./php:/docker/php:ro entrypoint: ["/bin/sh", "-c", "tr -d '\\r' < /docker/php/entrypoint-dev.sh | sh"] depends_on: mysql: condition: service_healthy frontend: image: nginx:1.27-alpine container_name: soondesign-frontend restart: unless-stopped ports: - "${WEB_PORT:-8100}:8080" - "${ELECTRON_PORT:-8101}:8081" volumes: - ../frontend-web:/var/www/web:ro - ../frontend-electron:/var/www/electron:ro - ./config/local.js:/var/www/web/config/local.js:ro - ./nginx/frontend.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - api volumes: soondesign_mysql_data: name: soondesign_mysql_data