BankliPlus/forserverbankli/solarbank/docker-compose.yml
2025-08-13 18:05:26 +02:00

92 lines
1.9 KiB
YAML

version: '3.8'
services:
# Backend API service
backend:
build: ./backend
container_name: solarbank-backend
restart: always
volumes:
- ./backend:/app
env_file:
- .env
depends_on:
- db
- redis
command: >
sh -c "sleep 10 && uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload"
networks:
- solarbank-network
# Frontend service
frontend:
build: ./frontend
container_name: solarbank-frontend
restart: always
volumes:
- ./frontend:/app
- /app/node_modules
env_file:
- .env
depends_on:
- backend
networks:
- solarbank-network
# Database service
db:
image: postgres:14-alpine
container_name: solarbank-db
restart: always
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- .env
networks:
- solarbank-network
# Redis for caching and job queuing
redis:
image: redis:alpine
container_name: solarbank-redis
restart: always
volumes:
- redis_data:/data
networks:
- solarbank-network
# Nginx reverse proxy
nginx:
build: ./nginx
container_name: solarbank-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/certbot/conf:/etc/letsencrypt
- ./nginx/certbot/www:/var/www/certbot
depends_on:
- backend
- frontend
networks:
- solarbank-network
# Certbot for SSL certificates
certbot:
image: certbot/certbot
container_name: solarbank-certbot
volumes:
- ./nginx/certbot/conf:/etc/letsencrypt
- ./nginx/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
volumes:
postgres_data:
redis_data:
networks:
solarbank-network:
driver: bridge