printhive/docker-compose.yml
dlawler489 8ad25aff98 compose: route via shared Traefik network instead of host port
Drop the published host port (it clashed on the deploy host) and attach
the app to the external Traefik network so Traefik routes to it directly.
Stable container_name printhive-app for the file provider to target;
network name configurable via TRAEFIK_NETWORK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 20:45:02 +10:00

64 lines
2.2 KiB
YAML

services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: printhive
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-printhive}
POSTGRES_DB: printhive
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U printhive -d printhive"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
app:
# Pulled from the Forgejo registry (built by CI). To build locally instead:
# docker build -t git.plexultra.com/dlawler489/printhive:latest .
image: git.plexultra.com/dlawler489/printhive:latest
pull_policy: always
container_name: printhive-app # stable name for the Traefik file-provider to target
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: postgres://printhive:${POSTGRES_PASSWORD:-printhive}@db:5432/printhive
PORT: 3000
# Optional — these can also be set in the app's Settings menu (stored in the DB).
THINGIVERSE_TOKEN: ${THINGIVERSE_TOKEN:-}
FLARESOLVERR_URL: ${FLARESOLVERR_URL:-}
MAKERWORLD_TOKEN: ${MAKERWORLD_TOKEN:-}
PRINTABLES_TOKEN: ${PRINTABLES_TOKEN:-}
volumes:
- uploads:/app/uploads
- thumbnails:/app/thumbnails
- glb:/app/glb
# No host port published — Traefik reaches the app over the shared network
# at http://printhive-app:3000 (configure that in your Traefik file provider).
networks:
- default # talk to the db
- traefik # reachable by Traefik
restart: unless-stopped
# Traefik (if using labels rather than your file provider):
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.printhive.rule=Host(`printhive.plexultra.com`)"
# - "traefik.http.routers.printhive.entrypoints=websecure"
# - "traefik.http.routers.printhive.tls.certresolver=letsencrypt"
# - "traefik.http.services.printhive.loadbalancer.server.port=3000"
volumes:
pgdata:
uploads:
thumbnails:
glb:
networks:
default:
# The existing Traefik network (same one your other services use).
# Set TRAEFIK_NETWORK in Dockhand to its exact name.
traefik:
external: true
name: ${TRAEFIK_NETWORK:-traefik}