aac00ec01c
Fix backend/Dockerfile to COPY templates/ and static/ (the go:embed assets from Tasks 5-7) alongside *.go, plus backend/.dockerignore which was silently excluding both directories from the build context — the Dockerfile fix alone still failed the build. Wire WEB_PASSWORD through docker-compose.yml, add a second Traefik router (mangaweb) plus explicit service labels on both routers in docker-compose.prod.yml, and document the new variables and deploy steps in .env.example, DEPLOY.md, and CLAUDE.md.
32 lines
1.2 KiB
YAML
32 lines
1.2 KiB
YAML
# Base stack — works standalone for local smoke testing (`docker compose up`).
|
|
# The service binds 127.0.0.1:8080; a host reverse proxy (nginx/Caddy/Traefik)
|
|
# terminates TLS for manga-api.<domain> and forwards to it.
|
|
#
|
|
# If your proxy runs in Docker on its own network, use the prod override which
|
|
# attaches to that network instead of publishing a port:
|
|
# docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
|
|
|
services:
|
|
manga-api:
|
|
build: ./backend
|
|
image: mangabm-backend:latest
|
|
container_name: manga-api
|
|
restart: unless-stopped
|
|
environment:
|
|
# API_TOKEN is required — compose refuses to start without it.
|
|
API_TOKEN: ${API_TOKEN:?set API_TOKEN in .env}
|
|
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-https://asuracomic.net,https://asurascans.com,https://demonicscans.org}
|
|
DB_PATH: /data/bookmarks.db
|
|
PORT: "8080"
|
|
# Gates the browser UI. Unset means the web routes are not served at all.
|
|
WEB_PASSWORD: ${WEB_PASSWORD:-}
|
|
volumes:
|
|
- bookmarks-data:/data
|
|
# Bound to loopback only: the proxy (or curl during smoke test) reaches it,
|
|
# the public internet does not.
|
|
ports:
|
|
- "127.0.0.1:8080:8080"
|
|
|
|
volumes:
|
|
bookmarks-data:
|