BIND_ADDRESS und HOST_PORT statt eines fest verdrahteten 127.0.0.1:3000. Die Voreinstellung bleibt localhost - wer den Reverse Proxy auf einem anderen Host betreibt oder Port 3000 schon belegt hat, aendert jetzt zwei Zeilen in der .env statt der compose-Datei. Der komplette Stack wurde damit einmal durchgespielt: docker compose up laeuft, Container wird healthy, Migrationen greifen und /data landet mit Datenbank und Dateiverzeichnis auf dem Host. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
# ---------------------------------------------------------------------------
|
|
# Bricktrack - ein Service, ein Datenverzeichnis.
|
|
#
|
|
# TLS terminiert der Reverse Proxy (z. B. Nginx Proxy Manager). Der Container
|
|
# spricht nur HTTP und muss nicht nach aussen erreichbar sein.
|
|
# ---------------------------------------------------------------------------
|
|
|
|
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: bricktrack:latest
|
|
container_name: bricktrack
|
|
restart: unless-stopped
|
|
|
|
env_file:
|
|
- .env
|
|
|
|
environment:
|
|
# Im Container liegen die Daten immer unter /data - der Pfad auf dem Host
|
|
# wird ueber den Bind-Mount unten bestimmt.
|
|
DATA_DIR: /data
|
|
PORT: 3000
|
|
|
|
ports:
|
|
# Standardmaessig nur an localhost gebunden: erreichbar wird die App
|
|
# ueber den Reverse Proxy. Sitzt der Proxy auf einem anderen Host, in
|
|
# der .env BIND_ADDRESS=0.0.0.0 setzen (und die Firewall zuziehen).
|
|
- "${BIND_ADDRESS:-127.0.0.1}:${HOST_PORT:-3000}:3000"
|
|
|
|
volumes:
|
|
# Das eine Verzeichnis, das gesichert werden muss.
|
|
- ./data:/data
|
|
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3000/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
start_period: 20s
|
|
retries: 3
|
|
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|