version: '3'
services:
    webservice:
        build:
            context: .
            dockerfile: ./.docker/nginx.Dockerfile
        image: nginx:1.21.6-alpine
        container_name: nginx
        depends_on:
            - php
        ports:
            - '8000:80'
        volumes:
            - ./.docker/nginx/nginx.conf:/etc/nginx/nginx.conf

    php:
        build:
            context: .
            dockerfile: ./.docker/php.Dockerfile
        container_name: php
        depends_on:
            - db
        command: php-fpm -F -R
        env_file:
            - .app.env
        environment:
            DB_HOST: db
            DB_DATABASE: db
            DB_USERNAME: db
            DB_PASSWORD: secret
            QUEUE_CONNECTION: redis
            XELATEX_BIN: /usr/bin/xelatex
            PDFLATEX_BIN: /usr/bin/pdflatex
            REDIS_HOST: redis

    horizon:
        build:
            context: .
            dockerfile: ./.docker/php.Dockerfile
        container_name: horizon
        depends_on:
            - db
            - php
        command: php artisan horizon
        env_file:
            - .app.env
        environment:
            DB_HOST: db
            DB_DATABASE: db
            DB_USERNAME: db
            DB_PASSWORD: secret
            QUEUE_CONNECTION: redis
            XELATEX_BIN: /usr/bin/xelatex
            PDFLATEX_BIN: /usr/bin/pdflatex
            REDIS_HOST: redis

    db:
        image: mariadb:10.6.5
        container_name: db
        environment:
            MARIADB_ROOT_PASSWORD: secret_root_password
            MYSQL_PASSWORD: secret
            MYSQL_DATABASE: db
            MYSQL_USER: db
        volumes:
            - ./data/db:/var/lib/mysql

    redis:
        image: redis:alpine3.18
        container_name: redis