version: '3'

services:
    php:
        build: php
        depends_on:
          - db
          - redis
        volumes:
            # Entrypoint
            - ../php/entrypoint.sh:/entrypoint.sh
            - ../db/wait_for_db.sh:/wait_for_db.sh
            - ../social/install.sh:/var/entrypoint.d/0_social_install.sh
            - ./coverage.sh:/var/tooling/coverage.sh
            - ./phpstan.sh:/var/tooling/phpstan.sh
            - ./acceptance.sh:/var/tooling/acceptance.sh
            # Main files
            - ../../:/var/www/social
            - /var/www/social/docker # exclude docker folder
        env_file:
            - social.env
            - db.env
        command: /entrypoint.sh

    nginx:
        image: nginx:alpine
        depends_on:
            - php
        restart: always
        tty: false
        volumes:
            # Nginx
            - ../nginx/nginx.conf:/var/nginx/social.conf
            - ../nginx/domain.sh:/var/nginx/domain.sh
            # Certbot
            - ../certbot/www:/var/www/certbot
            - ../certbot/.files:/etc/letsencrypt
            # social
            - ../../public:/var/www/social/public
        env_file:
            - ../bootstrap/bootstrap.env
        command: /bin/sh -c '/var/nginx/domain.sh; nginx -g "daemon off;"'

    pa11y:
        build: pa11y
        depends_on:
            - nginx
        volumes:
          - ../../tests/screenshots:/screenshots
          - ./accessibility.sh:/accessibility.sh
          - ./generate_pa11y-ci-config.php:/generate_pa11y-ci-config.php
          - /pa11y
        cap_add:
          - SYS_ADMIN

    db:
        image: postgres:alpine
        environment:
            - PGDATA=/var/lib/postgres/data
        env_file:
            - db.env
        volumes:
            - database:/var/lib/postgres/data

    redis:
        image: redis:alpine
        tty: false

volumes:
    database:
