Files
blinds_express/docker-compose.yml

76 lines
2.1 KiB
YAML
Raw Permalink Normal View History

services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-blinds}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-blinds_db}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-blinds} -d ${POSTGRES_DB:-blinds_db}"]
interval: 5s
timeout: 5s
retries: 10
deploy:
resources:
limits:
memory: 256M
# MongoDB is only needed by Agenda for the job queue. Lives entirely inside
# this compose project; no host port exposure.
mongo:
image: mongo:7
restart: unless-stopped
command: ["--bind_ip_all", "--quiet", "--logpath", "/dev/null"]
volumes:
- mongo_data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"]
interval: 10s
timeout: 5s
retries: 10
deploy:
resources:
limits:
memory: 384M
backend:
build:
context: .
dockerfile: Dockerfile.backend
args:
- NODE_VERSION=${NODE_VERSION:-22-alpine}
restart: unless-stopped
env_file: ./.env
environment:
# Internal service-name DNS. Override anything in .env that pointed at
# 127.0.0.1 — those values were for the host-postgres era.
PGHOST: postgres
PGPORT: 5432
PGUSER: ${POSTGRES_USER:-blinds}
PGPASSWORD: ${POSTGRES_PASSWORD}
PGDATABASE: ${POSTGRES_DB:-blinds_db}
MONGO_URI: mongodb://mongo:27017/myScheduledApp
PORT: ${PORT:-3002}
# Bind only on host loopback — Cloudflare Tunnel proxies blindmaster.wahwa.com here.
ports:
- "127.0.0.1:${PORT:-3002}:${PORT:-3002}"
volumes:
# Set APNS_P8_HOST_PATH in .env to the actual filename, e.g. ./AuthKey_A7ASKB9B7V.p8
- ${APNS_P8_HOST_PATH:-./AuthKey.p8}:${APNS_P8_PATH:-/app/AuthKey.p8}:ro
depends_on:
postgres:
condition: service_healthy
mongo:
condition: service_healthy
deploy:
resources:
limits:
memory: 256M
volumes:
postgres_data:
mongo_data: