services: app: build: context: . dockerfile: Dockerfile container_name: laravel-app restart: unless-stopped userns_mode: "keep-id" working_dir: /var/www/html volumes: - ./:/var/www/html:Z ports: - "8080:8080" networks: - laravel depends_on: - db - redis - mailpit db: image: docker.io/library/mysql:8.0 container_name: laravel-db restart: unless-stopped environment: MYSQL_DATABASE: laravel MYSQL_ROOT_PASSWORD: root MYSQL_USER: laravel MYSQL_PASSWORD: secret volumes: - dbdata:/var/lib/mysql:Z - ./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:Z ports: - "3306:3306" networks: - laravel redis: image: docker.io/library/redis:alpine container_name: laravel-redis restart: unless-stopped ports: - "6379:6379" networks: - laravel mailpit: image: docker.io/axllent/mailpit:latest container_name: laravel-mailpit restart: unless-stopped ports: - "8025:8025" # Web UI - "1025:1025" # SMTP server networks: - laravel phpmyadmin: image: docker.io/phpmyadmin/phpmyadmin:latest container_name: laravel-phpmyadmin restart: unless-stopped environment: PMA_HOST: db PMA_USER: root PMA_PASSWORD: root ports: - "8081:80" networks: - laravel depends_on: - db networks: laravel: driver: bridge volumes: dbdata: driver: local