# Production deployment — runs on the server behind the Caddy reverse proxy. # Images are built and pushed by the Gitea workflow (.gitea/workflows/docker.yml). # # One-time server setup: # docker network create solelog_network # # attach your (containerised) Caddy to that network, e.g. add it to Caddy's # # compose as an external network, or: docker network connect solelog_network # cp .env.prod.example .env # then fill in real values # # Deploy / update: # docker compose -f docker-compose.prod.yml pull # docker compose -f docker-compose.prod.yml up -d # # Caddyfile (on your edge Caddy — it resolves these names over solelog_network): # api.solelog.vrossem.net { reverse_proxy solelog-api:3000 } # solelog.vrossem.net { reverse_proxy solelog-worker:80 } # admin.solelog.vrossem.net { reverse_proxy solelog-admin:80 } services: api: image: gitea.vrossem.net/bas/solelog:latest container_name: solelog-api env_file: .env # BETTER_AUTH_SECRET, BETTER_AUTH_URL, CORS_ORIGINS environment: DATABASE_URL: file:/data/app.db PORT: '3000' volumes: - solelog_db:/data networks: - solelog_network restart: unless-stopped worker: image: gitea.vrossem.net/bas/solelog-worker:latest container_name: solelog-worker networks: - solelog_network restart: unless-stopped admin: image: gitea.vrossem.net/bas/solelog-admin:latest container_name: solelog-admin networks: - solelog_network restart: unless-stopped networks: solelog_network: external: true volumes: solelog_db: