ci: use external Nginx Proxy Manager instead of Caddy
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
aa37b44e00
commit
bdf47d0f01
4 files changed
+6
-59
No files matched your search
@@ -2,7 +2,7 @@
|
||||
# push auf main -> Images bauen, in die Gitea-Registry pushen, Test-Stack aktualisieren
|
||||
# Tag v* -> dieselben (bereits getesteten) Images als Release taggen, Prod-Stack aktualisieren
|
||||
# Konfiguration/Secrets liegen auf dem Host in /opt/familyplanner/{test,prod}.env (siehe deploy/env.*.example).
|
||||
# Runner läuft als Container: Job-Container brauchen Docker-Socket und /opt/familyplanner (rw) – siehe docs/deploy-runner.md.
|
||||
# Runner läuft als Container: Job-Container brauchen Docker-Socket und /opt/familyplanner – siehe docs/deploy-runner.md.
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
@@ -71,15 +71,11 @@ jobs:
|
||||
docker compose -p familyplanner-prod ps sql --status running -q | grep -q . && COMPOSE_PROJECT_NAME=familyplanner-prod sh scripts/backup.sh || echo "Erster Start, kein Backup"
|
||||
rm -f .env
|
||||
|
||||
- name: Caddyfile auf den Host legen (Bind-Mounts löst der Host-Docker auf)
|
||||
run: cp deploy/Caddyfile "$CONFIG_DIR/Caddyfile"
|
||||
|
||||
- name: Prod-Stack aktualisieren
|
||||
working-directory: deploy
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
CADDYFILE: /opt/familyplanner/Caddyfile
|
||||
run: |
|
||||
docker network inspect edge >/dev/null 2>&1 || docker network create edge
|
||||
docker compose -p familyplanner-prod --env-file "$CONFIG_DIR/prod.env" --profile proxy pull $SERVICES
|
||||
docker compose -p familyplanner-prod --env-file "$CONFIG_DIR/prod.env" --profile proxy up -d --remove-orphans --wait
|
||||
docker compose -p familyplanner-prod --env-file "$CONFIG_DIR/prod.env" pull $SERVICES
|
||||
docker compose -p familyplanner-prod --env-file "$CONFIG_DIR/prod.env" up -d --remove-orphans --wait
|
||||
@@ -1,22 +0,0 @@
|
||||
# Reverse Proxy mit automatischem HTTPS (Let's Encrypt) für Prod und Test auf demselben Host.
|
||||
# Caddy läuft nur im Prod-Stack (Profil "proxy") und erreicht beide Stacks über das externe Docker-Netz "edge"
|
||||
# (Alias <STACK_NAME>-web). Ist der Test-Stack aus, liefert die Test-Domain einfach 502.
|
||||
(common) {
|
||||
encode zstd gzip
|
||||
|
||||
header {
|
||||
Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
||||
-Server
|
||||
}
|
||||
}
|
||||
|
||||
{$DOMAIN} {
|
||||
import common
|
||||
# WebSockets (SignalR) werden automatisch durchgereicht.
|
||||
reverse_proxy prod-web:8080
|
||||
}
|
||||
|
||||
{$TEST_DOMAIN} {
|
||||
import common
|
||||
reverse_proxy test-web:8080
|
||||
}
|
||||
@@ -2,9 +2,8 @@
|
||||
#
|
||||
# cp .env.example .env # Werte anpassen!
|
||||
# docker compose up -d --build
|
||||
# docker compose --profile proxy up -d --build # inkl. Caddy (HTTPS mit Let's Encrypt)
|
||||
#
|
||||
# Die Anwendung verlangt HTTPS (Secure-Cookies). Ohne Caddy entweder einen eigenen Reverse Proxy
|
||||
# Die Anwendung verlangt HTTPS (Secure-Cookies). Davor einen Reverse Proxy (z. B. Nginx Proxy Manager)
|
||||
# mit TLS davor setzen oder nur über http://localhost testen.
|
||||
|
||||
name: familyplanner
|
||||
@@ -101,7 +100,7 @@ services:
|
||||
services__api__http__0: http://api:8080
|
||||
ports:
|
||||
- "${WEB_BIND:-127.0.0.1}:${WEB_PORT:-8080}:8080"
|
||||
# Gemeinsames Netz mit dem Reverse Proxy (Test + Prod auf einem Host): einmalig `docker network create edge`
|
||||
# Gemeinsames Netz mit dem Reverse Proxy (z. B. Nginx Proxy Manager; Test + Prod auf einem Host): einmalig `docker network create edge`
|
||||
networks:
|
||||
default:
|
||||
edge:
|
||||
@@ -118,28 +117,6 @@ services:
|
||||
start_period: 15s
|
||||
restart: unless-stopped
|
||||
|
||||
caddy:
|
||||
profiles: ["proxy"]
|
||||
image: caddy:2
|
||||
environment:
|
||||
DOMAIN: ${DOMAIN:-localhost}
|
||||
TEST_DOMAIN: ${TEST_DOMAIN:-test.localhost}
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "443:443/udp"
|
||||
volumes:
|
||||
- ${CADDYFILE:-./Caddyfile}:/etc/caddy/Caddyfile:ro
|
||||
- caddy-data:/data
|
||||
- caddy-config:/config
|
||||
networks:
|
||||
default:
|
||||
edge:
|
||||
depends_on:
|
||||
web:
|
||||
condition: service_healthy
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
edge:
|
||||
external: true
|
||||
@@ -147,5 +124,3 @@ networks:
|
||||
volumes:
|
||||
sql-data:
|
||||
sql-backup:
|
||||
caddy-data:
|
||||
caddy-config:
|
||||
@@ -6,9 +6,7 @@ REGISTRY=gitea.example.com/owner/
|
||||
WEB_PORT=8080
|
||||
WEB_BIND=127.0.0.1
|
||||
|
||||
# Caddy (Profil "proxy" – nur im Prod-Stack, bedient beide Domains)
|
||||
DOMAIN=planner.example.com
|
||||
TEST_DOMAIN=test.planner.example.com
|
||||
# HTTPS/Domains: Nginx Proxy Manager im Netz "edge" -> Ziel prod-web:8080 (Websockets Support an)
|
||||
|
||||
SQL_SA_PASSWORD=
|
||||
MSSQL_PID=Express
|
||||
|
||||
Reference in new issue
Block a user