version: '3.8' services: littleshop: image: littleshop:latest build: context: ./LittleShop dockerfile: Dockerfile container_name: littleshop restart: unless-stopped ports: - "8080:8080" environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:8080 volumes: - ./data:/app/data - ./logs:/app/logs - ./config/littleshop-appsettings.Production.json:/app/appsettings.Production.json:ro depends_on: - db networks: - littleshop-network telebot: image: telebot:latest build: context: ./TeleBot dockerfile: Dockerfile container_name: telebot restart: unless-stopped ports: - "5010:5010" environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:5010 volumes: - ./logs:/app/logs - ./config/telebot-appsettings.Production.json:/app/appsettings.Production.json:ro depends_on: - littleshop networks: - littleshop-network nginx: image: nginx:alpine container_name: littleshop-nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/sites:/etc/nginx/conf.d:ro - ./ssl:/etc/ssl/certs:ro - ./logs/nginx:/var/log/nginx depends_on: - littleshop - telebot networks: - littleshop-network db: image: postgres:15-alpine container_name: littleshop-db restart: unless-stopped environment: POSTGRES_DB: littleshop POSTGRES_USER: littleshop POSTGRES_PASSWORD: ${DB_PASSWORD:-change_this_password} volumes: - postgres_data:/var/lib/postgresql/data - ./backups:/backups networks: - littleshop-network redis: image: redis:alpine container_name: littleshop-redis restart: unless-stopped command: redis-server --appendonly yes volumes: - redis_data:/data networks: - littleshop-network volumes: postgres_data: redis_data: networks: littleshop-network: driver: bridge