services: php: build: context: . dockerfile: docker/dockerfile_php environment: DB_HOST: mariadb DB_DATABASE: ${MYSQL_DATABASE} DB_USERNAME: ${MYSQL_USER} DB_PASSWORD: ${MYSQL_PASSWORD} image: angels-it/php-app volumes: - ./app:/var/www/html - ./sessions:/var/lib/php/sessions - ./config/php:/usr/local/etc/php - ./logs/php:/var/log networks: - app_network php-cron: build: context: . dockerfile: docker/dockerfile_cron image: angels-it/php-cron environment: APP_ENV: ${APP_ENV} DB_HOST: mariadb DB_DATABASE: ${MYSQL_DATABASE} DB_USERNAME: ${MYSQL_USER} DB_PASSWORD: ${MYSQL_PASSWORD} volumes: - ./app:/var/www/html - ./config/php:/usr/local/etc/php - ./config/cron:/etc/cron.d - ./logs/php-cron:/var/log command: > /bin/sh -c ' if [ "$${APP_ENV}" = "prod" ]; then echo "[cron] production mode — starting cron"; cron -f; else echo "[cron] dev mode — sleeping"; tail -f /dev/null; fi ' restart: always networks: - app_network # bambolo-worker: # build: # context: . # dockerfile: docker/dockerfile_worker # image: angels-it/worker # environment: # DB_HOST: mariadb # DB_DATABASE: ${MYSQL_DATABASE} # DB_USERNAME: ${MYSQL_USER} # DB_PASSWORD: ${MYSQL_PASSWORD} # volumes: # - ./app:/var/www/html # - ./config/php:/usr/local/etc/php # - ./logs/worker:/var/log # restart: always # networks: # - app_network nginx: image: nginx:1.24.0 ports: - "80:80" - "443:443" depends_on: - php volumes: - ./app:/var/www/html - ./config/nginx/default.conf.${APP_ENV}:/etc/nginx/conf.d/default.conf - ./config/certs:/etc/letsencrypt - ./config/certs-data:/data/letsencrypt - ./config/certs/selfsigned:/etc/ssl/selfsigned - ./logs/nginx:/var/log/nginx networks: - app_network mariadb: image: mariadb:10.6 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: - ./db/mysql:/var/lib/mysql - ./db/init:/docker-entrypoint-initdb.d command: [ '--default_authentication_plugin=mysql_native_password', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--sql_mode=NO_ENGINE_SUBSTITUTION' ] networks: - app_network memcached: image: memcached:1.6.38 networks: - app_network # gearman: # image: artefactual/gearmand:1.1.21.2-alpine # restart: unless-stopped # networks: # - app_network manticore_search: build: context: . dockerfile: docker/dockerfile_manticore_search image: manticoresearch/manticore:6.3.8 user: root volumes: - ./db/manticore_search:/var/manticore - ./config/manticore_search:/etc/manticoresearch - ./logs/manticore_search:/var/log/manticore environment: DB_HOST: mariadb DB_DATABASE: ${MYSQL_DATABASE} DB_USERNAME: ${MYSQL_USER} DB_PASSWORD: ${MYSQL_PASSWORD} networks: - app_network manticore_logs: image: manticoresearch/manticore:6.3.8 volumes: - ./db/manticore_logs:/var/manticore - ./config/manticore_logs:/etc/manticoresearch - ./logs/manticore_logs:/var/log/manticore networks: - app_network certbot: image: certbot/certbot volumes: - ./config/certs:/etc/letsencrypt - ./config/certs-data:/data/letsencrypt - ./app:/var/www/html/ - ./logs/certbot:/var/log/letsencrypt entrypoint: /bin/sh -c command: > "trap exit TERM; while :; do certbot renew --webroot -w /var/www/html/www --quiet; sleep 12h & wait $${!}; done" networks: - app_network phpmyadmin: image: phpmyadmin/phpmyadmin:latest ports: - "8080:80" environment: - PMA_HOST=mariadb - PMA_PORT=3306 networks: - app_network networks: app_network: driver: bridge