services: web: image: nginx:1.30-alpine ports: - "${MESHVAULT_HTTP_HOST:-127.0.0.1}:${MESHVAULT_HTTP_PORT:-8090}:80" volumes: - ./public:/var/www/html/public:ro - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - app app: build: context: . dockerfile: docker/php/Dockerfile user: www-data working_dir: /var/www/html environment: MESHVAULT_LIBRARY_DIR: ${MESHVAULT_LIBRARY_DIR:-/var/lib/meshvault/library} MESHVAULT_ENV: ${MESHVAULT_ENV:-production} MESHVAULT_LOG_LEVEL: ${MESHVAULT_LOG_LEVEL:-info} MESHVAULT_DB_HOST: ${MESHVAULT_DB_HOST:-db} MESHVAULT_DB_PORT: ${MESHVAULT_DB_PORT:-5432} MESHVAULT_DB_NAME: ${MESHVAULT_DB_NAME:-meshvault} MESHVAULT_DB_USER: ${MESHVAULT_DB_USER:-meshvault} MESHVAULT_DB_PASSWORD: ${MESHVAULT_DB_PASSWORD:?Set MESHVAULT_DB_PASSWORD in .env} volumes: - ./public:/var/www/html/public:ro - ./src:/var/www/html/src:ro - ./config:/var/www/html/config:ro - ./templates:/var/www/html/templates:ro - ./tests:/var/www/html/tests:ro - ./db:/var/www/html/db:ro - ./bin:/var/www/html/bin:ro - ./composer.json:/var/www/html/composer.json:ro - ./phpunit.xml.dist:/var/www/html/phpunit.xml.dist:ro - ./phpcs.xml.dist:/var/www/html/phpcs.xml.dist:ro - ./dev.sh:/var/www/html/dev.sh:ro - ./dev.ps1:/var/www/html/dev.ps1:ro - ./README.md:/var/www/html/README.md:ro - ./CONTRIBUTING.md:/var/www/html/CONTRIBUTING.md:ro - ./LICENSE:/var/www/html/LICENSE:ro - ./.editorconfig:/var/www/html/.editorconfig:ro - ./.dockerignore:/var/www/html/.dockerignore:ro - ./docker-compose.yml:/var/www/html/docker-compose.yml:ro - ./docker:/var/www/html/docker:ro - ./assets:/var/www/html/assets:ro - ./phinx.php:/var/www/html/phinx.php:ro - type: bind source: ${MESHVAULT_LIBRARY_HOST_DIR:-./library} target: ${MESHVAULT_LIBRARY_DIR:-/var/lib/meshvault/library} bind: create_host_path: false depends_on: db: condition: service_healthy db: image: postgres:17-bookworm environment: POSTGRES_DB: ${MESHVAULT_DB_NAME:-meshvault} POSTGRES_USER: ${MESHVAULT_DB_USER:-meshvault} POSTGRES_PASSWORD: ${MESHVAULT_DB_PASSWORD:?Set MESHVAULT_DB_PASSWORD in .env} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""] interval: 5s timeout: 5s retries: 12 start_period: 10s assets: build: context: . dockerfile: docker/assets/Dockerfile profiles: [tools] user: node working_dir: /workspace init: true volumes: - ./assets/css:/workspace/assets/css:ro - ./public:/workspace/public:ro - ./public/build:/workspace/public/build - ./templates:/workspace/templates:ro volumes: pgdata: