le-app/docker-compose.yml

78 lines
1.8 KiB
YAML

services:
makearmy-app:
build:
context: ./app
dockerfile: Dockerfile
container_name: makearmy-app
restart: unless-stopped
# Load secrets/config without baking into image
env_file:
- /var/www/lasereverything.net.db/app/.env.local
# Run as non-root
user: "1000:1000"
environment:
- NODE_ENV=production
- NEXT_PUBLIC_API_BASE_URL=https://forms.lasereverything.net
- NEXT_PUBLIC_FILE_API_BASE_URL=https://db.lasereverything.net
- NEXT_PUBLIC_MAIN_MENU_URL=https://db.lasereverything.net
- BGREMOVER_BASE_URL=http://bgbye:7001
- BG_BYE_UPSTREAM=http://bgbye:7001/remove_background/
- FILES_ROOT=/app/files
- HOME=/tmp
- NEXT_TELEMETRY_DISABLED=1
# Harden
read_only: true
tmpfs:
- /tmp:noexec,nosuid,nodev,size=256m,mode=1777
- /run:noexec,nosuid,nodev,size=64m,mode=755
- /app/.next/cache:noexec,nosuid,nodev,size=512m,mode=1777
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
# Only mount what must be writable
volumes:
- /var/www/lasereverything.net.db/app/files:/app/files:rw
ports:
- "127.0.0.1:3005:3000"
networks:
- makearmy_net
bgbye:
build:
context: ./bgbye
dockerfile: Dockerfile.gpu
container_name: bgbye
restart: unless-stopped
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
- OMP_NUM_THREADS=1
- PYTHONWARNINGS=ignore
ports:
- "127.0.0.1:7001:7001"
volumes:
# cache directory
- ./bgbye/.cache:/root/.cache
# model caches (prevents re-downloading)
- ./bgbye/.u2net:/root/.u2net
- ./bgbye/.ormbg:/root/.ormbg
networks:
- makearmy_net
networks:
makearmy_net:
external: true