Skip to content

Docker

Images

Image Description Base
ghcr.io/stefanposs/file-flux/backend API + WebSocket server alpine:3.19
ghcr.io/stefanposs/file-flux/frontend Nginx serving static UI nginx:alpine
ghcr.io/stefanposs/file-flux/agent Endpoint agent alpine:3.19

Docker Compose Services

services:
  db:
    image: postgres:16-alpine
    volumes: [postgres-data:/var/lib/postgresql/data]

  backend:
    build: ./backend
    ports: ["3001:3001", "3002:3002"]
    depends_on: [db]

  frontend:
    build: ./frontend
    ports: ["3000:80"]

  agent-central:
    build: ./agent
    depends_on: [backend]

Building Images

# Build all images
just docker-build

# Build specific service
docker compose build backend

Production Compose

Use the production overlay for hardened settings:

docker compose -f docker-compose.yml -f docker-compose.production.yml up -d

Volumes

Volume Purpose
postgres-data Database persistence
file-storage File transfer storage

Networking

All services communicate on internal Docker network. Only exposed ports:

  • 3000 — Frontend (HTTP)
  • 3001 — Backend REST API
  • 3002 — Backend WebSocket

Datenbank nicht exponieren

PostgreSQL sollte in Produktion nicht nach außen erreichbar sein. Port 5432 wird nur im Docker-Netzwerk bereitgestellt.