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

117 lines
3.1 KiB
YAML

version: '3.8'
services:
db:
image: postgres:13-alpine
container_name: solarbank_db
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_INITDB_ROOT_PASSWORD=${POSTGRES_INITDB_ROOT_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- solarbank_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: solarbank_redis
restart: unless-stopped
networks:
- solarbank_network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: ./backend
dockerfile: Dockerfile.prod
container_name: solarbank_backend
restart: unless-stopped
environment:
- PROJECT_NAME=${PROJECT_NAME}
- API_PREFIX=${API_PREFIX}
- DEBUG=${DEBUG}
- ENV=${ENV}
- SECRET_KEY=${SECRET_KEY}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- JWT_ALGORITHM=${JWT_ALGORITHM}
- ACCESS_TOKEN_EXPIRE_MINUTES=${ACCESS_TOKEN_EXPIRE_MINUTES}
- BACKEND_CORS_ORIGINS=${BACKEND_CORS_ORIGINS}
- POSTGRES_SERVER=${POSTGRES_SERVER}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- REDIS_HOST=${REDIS_HOST}
- REDIS_PORT=${REDIS_PORT}
- DEFAULT_IOT_SERVER_PORT=${DEFAULT_IOT_SERVER_PORT}
- DEFAULT_IOT_ENDPOINT=${DEFAULT_IOT_ENDPOINT}
- BATTERY_MIN_VOLTAGE=${BATTERY_MIN_VOLTAGE}
- BATTERY_MAX_VOLTAGE=${BATTERY_MAX_VOLTAGE}
- DEFAULT_GPS_TIMEOUT=${DEFAULT_GPS_TIMEOUT}
- GPS_ACCURACY_THRESHOLD=${GPS_ACCURACY_THRESHOLD}
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
networks:
- solarbank_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.prod
args:
- REACT_APP_API_URL=${REACT_APP_API_URL}
- REACT_APP_MAPBOX_TOKEN=${REACT_APP_MAPBOX_TOKEN}
container_name: solarbank_frontend
restart: unless-stopped
networks:
- solarbank_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/health"]
interval: 30s
timeout: 10s
retries: 3
nginx:
image: nginx:alpine
container_name: solarbank_nginx
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- backend
- frontend
networks:
- solarbank_network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
networks:
solarbank_network:
driver: bridge
volumes:
postgres_data: