version: '3.8' services: frontend: build: context: ./frontend dockerfile: ../docker/frontend/Dockerfile.dev container_name: trip-planner-frontend-dev ports: - "5173:5173" volumes: - ./frontend:/app:Z - node_modules:/app/node_modules environment: - NODE_ENV=development privileged: true networks: - trip-planner-network backend: build: context: ./backend dockerfile: ../docker/backend/Dockerfile.dev container_name: trip-planner-backend-dev ports: - "8000:8000" volumes: - ./backend:/var/www/html:Z - vendor:/var/www/html/vendor env_file: - .env.local depends_on: - database - redis privileged: true networks: - trip-planner-network database: image: docker.io/library/mariadb:11 container_name: trip-planner-db-dev ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-secret} MYSQL_DATABASE: ${DB_DATABASE:-trip_planner} MYSQL_USER: ${DB_USERNAME:-trip_user} MYSQL_PASSWORD: ${DB_PASSWORD:-secret} volumes: - ./docker/data/mysql-data:/var/lib/mysql:Z privileged: true networks: - trip-planner-network redis: image: docker.io/library/redis:alpine container_name: trip-planner-redis-dev ports: - "6379:6379" volumes: - redis-data:/data privileged: true networks: - trip-planner-network mailpit: image: docker.io/axllent/mailpit:latest container_name: trip-planner-mailpit-dev ports: - "1025:1025" - "8025:8025" networks: - trip-planner-network selenium-hub: image: selenium/hub:latest container_name: trip-planner-selenium-hub ports: - "4442:4442" - "4443:4443" - "4444:4444" environment: - GRID_MAX_SESSION=4 - GRID_BROWSER_TIMEOUT=300 - GRID_TIMEOUT=300 networks: - trip-planner-network selenium-chrome: image: selenium/node-chrome:latest container_name: trip-planner-selenium-chrome environment: - HUB_HOST=selenium-hub - HUB_PORT=4444 - SE_EVENT_BUS_HOST=selenium-hub - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 - NODE_MAX_INSTANCES=4 - NODE_MAX_SESSION=4 depends_on: - selenium-hub networks: - trip-planner-network networks: trip-planner-network: driver: bridge volumes: db-data: redis-data: node_modules: vendor: