volumes: db-store: psysh-store: configs: db-config: file: ./docker/mysql/my.cnf services: php: build: context: . dockerfile: ./docker/php/Dockerfile target: ${APP_BUILD_TARGET:-development} container_name: oc_php volumes: - type: bind source: ./ target: /workspace - type: volume source: psysh-store target: /root/.config/psysh volume: nocopy: true environment: - APP_DEBUG=${APP_DEBUG:-true} - APP_ENV=${APP_ENV:-local} - APP_URL=${APP_URL:-http://localhost} - LOG_CHANNEL=${LOG_CHANNEL:-stderr} - LOG_STDERR_FORMATTER=${LOG_STDERR_FORMATTER:-Monolog\Formatter\JsonFormatter} - DB_CONNECTION=${DB_CONNECTION:-mysql} - DB_HOST=${DB_HOST:-db} - DB_PORT=${DB_PORT:-3306} - DB_DATABASE=${DB_DATABASE:-laravel} - DB_USERNAME=${DB_USERNAME:-phper} - DB_PASSWORD=${DB_PASSWORD:-secret} depends_on: database: condition: service_healthy extra_hosts: - "host.docker.internal:host-gateway" nginx: build: context: . dockerfile: ./docker/nginx/Dockerfile container_name: ${APP_NAME}_nginx ports: - target: 80 published: ${WEB_PUBLISHED_PORT:-80} protocol: tcp mode: host volumes: - type: bind source: ./ target: /workspace depends_on: - php - database database: build: context: . dockerfile: ./docker/mysql/Dockerfile command: --max_allowed_packet=32505856 # Set max_allowed_packet to 256M (or any other value) ports: - target: 3306 published: ${DB_PUBLISHED_PORT:-3306} protocol: tcp mode: host configs: - source: db-config target: /etc/my.cnf volumes: - type: volume source: db-store target: /var/lib/mysql volume: nocopy: true environment: - MYSQL_DATABASE=${DB_DATABASE:-laravel} - MYSQL_USER=${DB_USERNAME:-phper} - MYSQL_PASSWORD=${DB_PASSWORD:-secret} - MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-secret} healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] timeout: 5s retries: 10