services: app: build: context: ./docker/php container_name: termanager2_app restart: unless-stopped working_dir: /var/www/html volumes: - .:/var/www/html - storage_data:/var/www/html/storage/app networks: - termanager2 depends_on: mariadb: condition: service_healthy redis: condition: service_healthy environment: - PHP_OPCACHE_VALIDATE_TIMESTAMPS=1 nginx: image: nginx:1.25-alpine container_name: termanager2_nginx restart: unless-stopped ports: - "${APP_PORT:-8080}:80" volumes: - .:/var/www/html:ro - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro networks: - termanager2 depends_on: - app 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 storage_data: driver: local networks: termanager2: driver: bridge