version: "3.3" volumes: certbot_volume: nginx_log_volume: mysql_data_volume: mysql_backup_volume: php_var_volume: bookstack_data_volume: rabbitmq_volume: redis_volume: php_support_volume: x-defaults-php: &defaults-php image: registry.dot-dot.ru/dot-dot:${DOTDOT_TAG} restart: unless-stopped volumes: - ./configs/php/.env:/application/.env - ./configs/php/.env.local:/application/.env.local - ./configs/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf - php_var_volume:/application/var - php_support_volume:/application/var/support-issue - ./configs/php/www.conf:/usr/local/etc/php-fpm.d/www.conf - ./configs/php/firebase-fcm-dotdot-key.json:/application/config/firebase-fcm-dotdot-key.json depends_on: - db - rabbitmq networks: - dd networks: dd: name: ${NETWORK} ingress: external: true services: db: image: mariadb:10.3.25 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_USER: ${MYSQL_USER} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_PASSWORD: ${MYSQL_PASSWORD} ports: - ${MYSQL_PORT}:3306 volumes: - mysql_data_volume:/var/lib/mysql - mysql_backup_volume:/backups networks: - dd mysqld-exporter: image: prom/mysqld-exporter:v0.15.1 restart: unless-stopped command: --config.my-cnf=/.my.cnf volumes: - ./.my.cnf:/.my.cnf depends_on: - db networks: - dd backend: <<: *defaults-php # command: "php-fpm && nginx -g 'daemon off;'" php: # TODO: Денис должен переделать и добавить command: ./bin/console app:auction:reload <<: *defaults-php statistic-export: <<: *defaults-php command: ./bin/console messenger:consume StatisticExport carrier-offers: <<: *defaults-php command: ./bin/console messenger:consume CarrierOffers user-trust: <<: *defaults-php command: ./bin/console messenger:consume UserTrust auction: <<: *defaults-php command: sh -c 'while true; do echo run; ./bin/console app:auction:process; sleep 60;done' lms: image: registry.dot-dot.ru/lms:${LMS_TAG} restart: unless-stopped command: npm run start volumes: - ./configs/lms/.env:/app/.env env_file: - ./configs/lms/.env networks: - dd static: image: registry.dot-dot.ru/dot-dot-static:${DOTDOT_TAG} restart: unless-stopped networks: - dd nuxt: image: registry.dot-dot.ru/front:${FRONT_TAG} restart: unless-stopped command: npm run start volumes: - ./configs/nuxt/.env:/application/nuxt/.env - ./configs/nuxt/entrypoint.sh:/entrypoint.sh env_file: - ./configs/nuxt/.env networks: - dd nginx: image: nginx:1.25.3-alpine3.18 restart: unless-stopped volumes: - ./configs/nginx/conf.d:/etc/nginx/conf.d - ./configs/nginx/nginx.conf:/etc/nginx/nginx.conf - ./configs/nginx/www:/var/www - ./configs/nginx/ssl:/etc/nginx/ssl - ./configs/nginx/other:/etc/nginx/other - certbot_volume:/etc/letsencrypt - nginx_log_volume:/var/log/nginx ports: - 80:80 - 443:443 labels: - "traefik.enable=true" - "traefik.http.routers.nginx${NETWORK}.rule=Host(`${NETWORK}.dot-dot.ru`)" - "traefik.http.services.nginx${NETWORK}.loadbalancer.server.port=80" depends_on: - nuxt - php - static networks: ingress: dd: aliases: - nginx node-exporter: image: prom/node-exporter:v1.7.0 container_name: node-exporter restart: unless-stopped volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.rootfs=/rootfs' - '--path.sysfs=/host/sys' - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' networks: - dd cadvisor: image: gcr.io/cadvisor/cadvisor:v0.47.2 restart: unless-stopped container_name: cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro - /dev/disk:/dev/disk:ro devices: - /dev/kmsg:/dev/kmsg networks: - dd bookstack: image: ghcr.io/linuxserver/bookstack:24.02.3 restart: unless-stopped container_name: bookstack environment: - PUID=1000 - PGID=1000 - APP_URL="https://wiki.dot-dot.ru" - DB_HOST=db - DB_USER=root - DB_PASS=${MYSQL_ROOT_PASSWORD} - DB_DATABASE=bookstack - MAIL_DRIVER=${MAIL_DRIVER} - MAIL_HOST=${MAIL_HOST} - MAIL_PORT=${MAIL_PORT} - MAIL_USERNAME=${MAIL_USERNAME} - MAIL_PASSWORD=${MAIL_PASSWORD} - MAIL_ENCRYPTION=${MAIL_ENCRYPTION} - MAIL_FROM=${MAIL_FROM} - MAIL_FROM_NAME=${MAIL_FROM_NAME} volumes: - ./configs/bookstack:/config #- bookstack_data_volume: networks: - dd rabbitmq: image: rabbitmq:3.12.1-management-alpine restart: unless-stopped hostname: ${COMPOSE_PROJECT_NAME} volumes: - rabbitmq_volume:/var/lib/rabbitmq - ./configs/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins environment: - RABBITMQ_DEFAULT_USER=${RABBITMQ_USERNAME} - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} - RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf networks: dd: {} redis: image: redis:7.2.4-alpine3.19 restart: unless-stopped volumes: - redis_volume:/data - ./configs/redis:/usr/local/etc/redis environment: - REDIS_PASSWORD=${REDIS_PASSWORD} - REDIS_PORT=6379 networks: dd: {} redis-exporter: image: oliver006/redis_exporter:v1.59.0 command: - "--redis.addr=redis://redis:6379" - "--redis.password=${REDIS_PASSWORD}" networks: dd: {}