services: app: build: context: . dockerfile: docker/php/Dockerfile container_name: termanager2_app restart: unless-stopped user: "1000:1000" working_dir: /var/www/html volumes: - ./:/var/www/html networks: - termanager2 depends_on: mariadb: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 9000"] interval: 5s timeout: 3s retries: 20 start_period: 45s environment: - PHP_OPCACHE_VALIDATE_TIMESTAMPS=1 - SEED_DEV_DATA=${SEED_DEV_DATA:-false} - RUN_DB_SEED_ON_FIRST_START=${RUN_DB_SEED_ON_FIRST_START:-true} - ENSURE_INITIAL_ADMIN_ON_EMPTY_DB=${ENSURE_INITIAL_ADMIN_ON_EMPTY_DB:-true} - INITIAL_ADMIN_NAME=${INITIAL_ADMIN_NAME:-} - INITIAL_ADMIN_EMAIL=${INITIAL_ADMIN_EMAIL:-} - INITIAL_ADMIN_PASSWORD=${INITIAL_ADMIN_PASSWORD:-} nginx: build: context: . dockerfile: docker/nginx/Dockerfile container_name: termanager2_nginx restart: unless-stopped ports: - "${APP_PORT:-8080}:80" volumes: - ./:/var/www/html:ro networks: - termanager2 depends_on: app: condition: service_healthy queue-worker: build: context: . dockerfile: docker/php/Dockerfile container_name: termanager2_queue restart: unless-stopped user: "1000:1000" working_dir: /var/www/html volumes: - ./:/var/www/html networks: - termanager2 depends_on: mariadb: condition: service_healthy redis: condition: service_healthy command: ["php", "artisan", "queue:work", "redis", "--queue=default", "--sleep=1", "--tries=1", "--timeout=0"] environment: - PHP_OPCACHE_VALIDATE_TIMESTAMPS=1 - SEED_DEV_DATA=${SEED_DEV_DATA:-false} - RUN_DB_SEED_ON_FIRST_START=${RUN_DB_SEED_ON_FIRST_START:-true} - ENSURE_INITIAL_ADMIN_ON_EMPTY_DB=${ENSURE_INITIAL_ADMIN_ON_EMPTY_DB:-true} - INITIAL_ADMIN_NAME=${INITIAL_ADMIN_NAME:-} - INITIAL_ADMIN_EMAIL=${INITIAL_ADMIN_EMAIL:-} - INITIAL_ADMIN_PASSWORD=${INITIAL_ADMIN_PASSWORD:-} mariadb: image: mariadb:11 container_name: termanager2_db restart: unless-stopped environment: MARIADB_DATABASE: ${DB_DATABASE:-termanager2} MARIADB_USER: ${DB_USERNAME:-termanager2} MARIADB_PASSWORD: ${DB_PASSWORD:-secret} MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-rootsecret} volumes: - db_data:/var/lib/mysql ports: - "${DB_PORT:-3306}:3306" networks: - termanager2 healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: termanager2_redis restart: unless-stopped command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-redissecret} volumes: - redis_data:/data ports: - "${REDIS_PORT:-6379}:6379" networks: - termanager2 healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redissecret}", "ping"] interval: 10s timeout: 5s retries: 5 mailpit: image: axllent/mailpit:latest container_name: termanager2_mail restart: unless-stopped ports: - "${MAIL_PORT:-1025}:1025" - "${MAILPIT_UI_PORT:-8025}:8025" networks: - termanager2 volumes: db_data: driver: local redis_data: driver: local networks: termanager2: driver: bridge