102 lines
2.4 KiB
YAML
102 lines
2.4 KiB
YAML
name: owl-stream
|
|
|
|
services:
|
|
owl-db:
|
|
image: postgres:16-alpine
|
|
container_name: owl-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: owl_stream
|
|
POSTGRES_USER: owl_user
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD must be set in .env}
|
|
volumes:
|
|
- owl_pg_data:/var/lib/postgresql/data
|
|
networks:
|
|
- owl-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U owl_user -d owl_stream"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 256M
|
|
|
|
owl-backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
container_name: owl-backend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
owl-db:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql://owl_user:${DB_PASSWORD:?DB_PASSWORD required}@owl-db:5432/owl_stream
|
|
JWT_SECRET: ${JWT_SECRET:?JWT_SECRET required}
|
|
PORT: 3020
|
|
HOST: 0.0.0.0
|
|
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-https://owls.bizzle.cloud,http://localhost:8089}
|
|
ports:
|
|
- "127.0.0.1:3020:3020"
|
|
networks:
|
|
- owl-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "node -e 'require(\"http\").get(\"http://localhost:3020/api/stats\",r=>{process.exit(r.statusCode===200?0:1)}).on(\"error\",()=>process.exit(1))'"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
|
|
owl-frontend:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: owl-frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
owl-backend:
|
|
condition: service_healthy
|
|
environment:
|
|
- NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://127.0.0.1:3020}
|
|
ports:
|
|
- "127.0.0.1:8110:8089"
|
|
- "172.18.0.1:8110:8089"
|
|
networks:
|
|
- owl-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO- http://0.0.0.0:8089/ || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 256M
|
|
|
|
networks:
|
|
owl-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
owl_pg_data:
|