services: # бот для получения храниния и обновления ключей сертификатов https certbot: build: context: ./certbot dockerfile: Dockerfile container_name: certbot volumes: - ./certbot/config:/etc/letsencrypt/config - certbot_data:/etc/letsencrypt - certbot_www:/var/www/certbot env_file: - .env environment: - EMAIL=${EMAIL} - DOMAINS=${ALL_DOMAINS} - STAGING=0 restart: unless-stopped healthcheck: test: [ "CMD-SHELL", "test -f /etc/letsencrypt/live/$$(echo $${DOMAINS} | cut -d',' -f1)/fullchain.pem || exit 1", ] interval: 30s timeout: 10s retries: 3 start_period: 40s # service сервис для работы nginx. Тут логика такая, если все перечисленные в стартовом скрипте, сайта (домены) имеют ключи тогда этот сервис свичаеться и работает через https. nginx: build: context: ./nginx dockerfile: Dockerfile env_file: .env container_name: nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - certbot_data:/etc/letsencrypt - certbot_www:/var/www/certbot - ./stubSite:/usr/share/nginx/stub/html - ./BB/bbvue/dist:/usr/share/nginx/begushiybashkir/html - analytics_logs:/var/log/analytics:ro networks: - web-network - internal - app-network depends_on: easysite: condition: service_healthy certbot: condition: service_healthy api_bb: condition: service_healthy analytics: condition: service_healthy api_yal: condition: service_healthy yalarba: condition: service_healthy valitovgaziz: condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -f http://localhost/health || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Statistics для сайта valitovgaziz.ru server работает на node.js 22 или выше. С бд не работает analytics: build: context: ./valitovgaziz/analytics dockerfile: Dockerfile container_name: analytics restart: unless-stopped ports: - "9999:3000" environment: - NODE_ENV=production - PORT=3000 - LOG_LEVEL=info - LOG_RETENTION_DAYS=30 volumes: - analytics_logs:/app/logs - analytics_data:/app/data networks: - web-network - internal healthcheck: test: ["CMD", "wget", "--spider", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Vue 3 SPA для valitovgaziz.ru valitovgaziz: build: context: ./valitovgaziz dockerfile: Dockerfile container_name: valitovgaziz restart: unless-stopped networks: - web-network depends_on: analytics: condition: service_healthy healthcheck: test: ["CMD", "wget", "--spider", "http://localhost/"] interval: 30s timeout: 10s retries: 3 start_period: 40s # PostgresQL DB база данных для храниния информации приложений Yalarba.ru && Easysite102.ru db: image: postgres:15-alpine restart: unless-stopped ports: - "5432:5432" environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: mydb container_name: db_tp volumes: - db_tp_data:/var/lib/postgresql/data - ./migrations:/docker-entrypoint-initdb.d networks: - app-network healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 30s timeout: 10s retries: 5 # REST API on Golang (Gorm, Chi) логика обработки информации для сайта БегущийБашкир api_bb: build: context: ./BB/api_bb dockerfile: Dockerfile ports: - "7777:8080" container_name: api_bb restart: unless-stopped depends_on: db: condition: service_healthy env_file: - ./BB/api_bb/.env volumes: - api_bb_uploads:/app/uploads environment: DB_HOST: db DB_PORT: 5432 DB_USER: postgres DB_PASSWORD: postgres DB_NAME: bb_db DB_SCHEMA: bb APP_PORT: 8080 networks: - app-network healthcheck: test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/api/health", ] interval: 30s timeout: 10s retries: 3 # SPA app прилжение выполнено на nuxt.js интерфейс для туристического бизнеса. Хранение информации в api_yal REST API app easysite: build: context: ./yalarba/easySite dockerfile: Dockerfile container_name: easysite restart: unless-stopped ports: - "3000:3000" environment: NODE_ENV: production HOST: 0.0.0.0 PORT: 3000 NUXT_PUBLIC_API_BASE: /api/v1 networks: - web-network - app-network healthcheck: test: ["CMD", "wget", "--spider", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 # REST API app on Golang для api_yal сервиса api_yal: build: context: ./yalarba/api_yal # Укажите правильный путь к вашему проекту dockerfile: Dockerfile container_name: api_yal restart: unless-stopped env_file: - ./yalarba/api_yal/.env depends_on: db: condition: service_healthy networks: - web-network - app-network healthcheck: test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8787/health", ] interval: 30s timeout: 10s retries: 3 start_period: 40s # Nuxt 4 SPA для yalarba.ru yalarba: build: context: ./yalarba/yalarba-nuxt dockerfile: Dockerfile container_name: yalarba restart: unless-stopped environment: NODE_ENV: production HOST: 0.0.0.0 PORT: 3000 NUXT_PUBLIC_API_BASE: /api/v1 NUXT_PUBLIC_APP_URL: https://yalarba.ru networks: - web-network - app-network healthcheck: test: ["CMD", "wget", "--spider", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 volumes: certbot_data: # volume для данных Certbot certbot_www: # volume для данных Certbot db_tp_data: # Volume для данных БД yalarba.ru api_bb_uploads: # Volume для загружаемых файлов бегущий башкир analytics_logs: # Volume для логов аналитики analytics_data: # Volume для данных аналитики networks: web-network: driver: bridge internal: driver: bridge app-network: driver: bridge # Эта опция автоматически удаляет orphans (Не используемые контейнеры) x-remove-orphans: true