version: '3'


networks:
    web:


volumes:
    mysql:
    redis:


services:

    minetrax:
        build:
            context: .
            dockerfile: ./docker/Dockerfile
        command: ["server"]
        image: '${COMPOSE_PROJECT_NAME}/minetrax:${TAG:-latest}'
        restart: always
        environment:
            DB_HOST: mysql
            REDIS_HOST: redis
        ports:
            - ${APP_PORT:-80}:80
        volumes:
            - ./.env:/var/www/html/.env
            - ./storage/app:/var/www/html/storage/app
            - ./storage/logs:/var/www/html/storage/logs
        networks:
            - web
        depends_on:
            - mysql
            - redis

    mysql:
        image: 'mysql/mysql-server:8.0'
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: '%'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - mysql:/var/lib/mysql
        networks:
            - web
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s

    redis:
        image: 'redis:alpine'
        restart: always
        volumes:
            - redis:/data
        networks:
            - web
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
