Use registry images in compose, drop MySQL/named volumes, fix omsorgWeb build
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (VITE_OMSORG_CORE_URL=${{ vars.OMSORG_CORE_PUBLIC_URL }}, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Successful in 3s
Docker-Images bauen und veröffentlichen / build (VITE_OMSORG_CORE_URL=${{ vars.OMSORG_CORE_PUBLIC_URL }}, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 3s
- docker-compose.yml: pull omsorgcore/omsorgapp/omsorgweb from the Gitea registry (pinnable via OMSORG_IMAGE_TAG) instead of building locally; remove the MySQL service (mitarbeiter-app-legacy is unmaintained legacy code) and switch all persistent storage from named Docker volumes to bind mounts under /root/data/. - omsorgWeb/Dockerfile: create the upload/download/etc. directories before chown'ing them - they're excluded by .gitignore, so a fresh CI checkout doesn't have them and the build failed there (only worked locally because of leftover local test files). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
598dfcd38a
commit
2a05c791f5
+34
-56
@@ -1,12 +1,29 @@
|
|||||||
name: omsorg
|
name: omsorg
|
||||||
|
|
||||||
# WICHTIG (der fehleranfälligste Punkt in diesem Setup):
|
# Zieht fertig gebaute Images aus der Gitea-Registry (siehe .gitea/workflows/docker-build.yml),
|
||||||
# - omsorgapp.build.args.VITE_OMSORG_CORE_URL muss die vom BROWSER erreichbare Adresse von
|
# baut hier bewusst NICHT lokal - die Dockerfiles in omsorgCore/, omsorgapp/, omsorgWeb/ sind
|
||||||
# omsorgcore sein (hier: der auf dem Host published Port), NICHT der interne Compose-DNS-Name -
|
# weiterhin da, werden aber nur noch von der CI verwendet. Vor `docker compose pull`/`up` einmal
|
||||||
# Vite bäckt diese URL zur Build-Zeit in den JS-Bundle ein (siehe omsorgapp/src/api/config.js).
|
# `docker login git.omsorg-pflegedienste.de` auf dem Server ausführen, falls die Images/Packages
|
||||||
# - omsorgweb.environment.OMSORG_CORE_URL ist dagegen der interne Servicename (http://omsorgcore:8080),
|
# nicht öffentlich lesbar sind. Über OMSORG_IMAGE_TAG lässt sich ein bestimmter Versions-Tag
|
||||||
# da PHP dort serverseitig per cURL aufruft (kein Browser-Kontext), siehe
|
# pinnen (z.B. `OMSORG_IMAGE_TAG=v0.1.0 docker compose up -d`), Default ist `latest`.
|
||||||
# omsorgWeb/docker/bootstrap-config.php.
|
#
|
||||||
|
# WICHTIG: omsorgapp bäckt die omsorgCore-URL (VITE_OMSORG_CORE_URL) zur BUILD-Zeit in den
|
||||||
|
# JS-Bundle ein (siehe omsorgapp/src/api/config.js) - das passiert jetzt in der CI über die
|
||||||
|
# Repo-Variable OMSORG_CORE_PUBLIC_URL, nicht mehr hier. omsorgweb.environment.OMSORG_CORE_URL
|
||||||
|
# ist davon unabhängig und bleibt der interne Compose-Servicename, da PHP dort serverseitig per
|
||||||
|
# cURL aufruft (kein Browser-Kontext), siehe omsorgWeb/docker/bootstrap-config.php.
|
||||||
|
#
|
||||||
|
# Alle persistenten Daten liegen bewusst als Bind-Mounts unter /root/data/ auf der Platte (keine
|
||||||
|
# benannten Docker-Volumes) - vor dem ersten `docker compose up` einmalig anlegen:
|
||||||
|
# mkdir -p /root/data/postgres /root/data/omsorgcore/documents \
|
||||||
|
# /root/data/omsorgweb/{uploads,downloads,fortbildung-materials,avatars,data}
|
||||||
|
# Postgres läuft im Container als uid 999 (nicht root) - /root/data/postgres muss dieser uid
|
||||||
|
# gehören, sonst schlägt der Start mit einem Permission-Fehler fehl:
|
||||||
|
# chown -R 999:999 /root/data/postgres
|
||||||
|
#
|
||||||
|
# mitarbeiter-app-legacy (Teil des omsorgweb-Images) ist Legacy-Code und braucht eigentlich MySQL -
|
||||||
|
# bewusst kein MySQL-Dienst mehr hier, die Legacy-App bleibt dadurch ohne DB-Anbindung (siehe
|
||||||
|
# omsorgWeb/CLAUDE.md - mitarbeiter-app-legacy wird nicht mehr weiterentwickelt).
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
@@ -16,32 +33,15 @@ services:
|
|||||||
POSTGRES_USER: omsorg_core
|
POSTGRES_USER: omsorg_core
|
||||||
POSTGRES_PASSWORD: omsorg_core_dev_password
|
POSTGRES_PASSWORD: omsorg_core_dev_password
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- /root/data/postgres:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U omsorg_core"]
|
test: ["CMD-SHELL", "pg_isready -U omsorg_core"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
mysql:
|
|
||||||
image: mysql:8.0
|
|
||||||
environment:
|
|
||||||
MYSQL_DATABASE: omsorg_web
|
|
||||||
MYSQL_USER: omsorg_web
|
|
||||||
MYSQL_PASSWORD: omsorg_web_dev_password
|
|
||||||
MYSQL_ROOT_PASSWORD: omsorg_web_root_dev_password
|
|
||||||
volumes:
|
|
||||||
- mysql_data:/var/lib/mysql
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
omsorgcore:
|
omsorgcore:
|
||||||
build:
|
image: git.omsorg-pflegedienste.de/admin/omsorg/omsorgcore:${OMSORG_IMAGE_TAG:-latest}
|
||||||
context: .
|
|
||||||
dockerfile: omsorgCore/Dockerfile
|
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -53,49 +53,27 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- omsorgcore_documents:/app/App_Data/documents
|
- /root/data/omsorgcore/documents:/app/App_Data/documents
|
||||||
|
|
||||||
omsorgapp:
|
omsorgapp:
|
||||||
build:
|
image: git.omsorg-pflegedienste.de/admin/omsorg/omsorgapp:${OMSORG_IMAGE_TAG:-latest}
|
||||||
context: .
|
|
||||||
dockerfile: omsorgapp/Dockerfile
|
|
||||||
args:
|
|
||||||
VITE_OMSORG_CORE_URL: "http://localhost:8080"
|
|
||||||
ports:
|
ports:
|
||||||
- "5173:80"
|
- "5173:80"
|
||||||
depends_on:
|
depends_on:
|
||||||
- omsorgcore
|
- omsorgcore
|
||||||
|
|
||||||
omsorgweb:
|
omsorgweb:
|
||||||
build:
|
image: git.omsorg-pflegedienste.de/admin/omsorg/omsorgweb:${OMSORG_IMAGE_TAG:-latest}
|
||||||
context: .
|
|
||||||
dockerfile: omsorgWeb/Dockerfile
|
|
||||||
depends_on:
|
depends_on:
|
||||||
mysql:
|
|
||||||
condition: service_healthy
|
|
||||||
omsorgcore:
|
omsorgcore:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
environment:
|
environment:
|
||||||
DB_HOST: mysql
|
|
||||||
DB_NAME: omsorg_web
|
|
||||||
DB_USER: omsorg_web
|
|
||||||
DB_PASSWORD: omsorg_web_dev_password
|
|
||||||
OMSORG_CORE_URL: "http://omsorgcore:8080"
|
OMSORG_CORE_URL: "http://omsorgcore:8080"
|
||||||
ports:
|
ports:
|
||||||
- "8081:80"
|
- "8081:80"
|
||||||
volumes:
|
volumes:
|
||||||
- web_uploads:/var/www/html/mitarbeiter-app-legacy/uploads
|
- /root/data/omsorgweb/uploads:/var/www/html/mitarbeiter-app-legacy/uploads
|
||||||
- web_downloads:/var/www/html/mitarbeiter-app-legacy/downloads
|
- /root/data/omsorgweb/downloads:/var/www/html/mitarbeiter-app-legacy/downloads
|
||||||
- web_fortbildung:/var/www/html/mitarbeiter-app-legacy/fortbildung-materials
|
- /root/data/omsorgweb/fortbildung-materials:/var/www/html/mitarbeiter-app-legacy/fortbildung-materials
|
||||||
- web_avatars:/var/www/html/mitarbeiter-app-legacy/assets/avatars
|
- /root/data/omsorgweb/avatars:/var/www/html/mitarbeiter-app-legacy/assets/avatars
|
||||||
- web_data:/var/www/html/mitarbeiter-app-legacy/data
|
- /root/data/omsorgweb/data:/var/www/html/mitarbeiter-app-legacy/data
|
||||||
|
|
||||||
volumes:
|
|
||||||
postgres_data:
|
|
||||||
mysql_data:
|
|
||||||
omsorgcore_documents:
|
|
||||||
web_uploads:
|
|
||||||
web_downloads:
|
|
||||||
web_fortbildung:
|
|
||||||
web_avatars:
|
|
||||||
web_data:
|
|
||||||
|
|||||||
+10
-2
@@ -18,8 +18,16 @@ COPY omsorgWeb/ /var/www/html/
|
|||||||
COPY .htaccess /var/www/html/.htaccess
|
COPY .htaccess /var/www/html/.htaccess
|
||||||
|
|
||||||
RUN chmod +x /var/www/html/docker/docker-entrypoint.sh \
|
RUN chmod +x /var/www/html/docker/docker-entrypoint.sh \
|
||||||
# Schreibbare Verzeichnisse für Datei-Uploads zur Laufzeit (siehe docker-compose.yml-Volumes) -
|
# Schreibbare Verzeichnisse für Datei-Uploads zur Laufzeit (siehe docker-compose.yml-Volumes).
|
||||||
# Besitzer auf den Apache-User setzen, damit PHP dort schreiben kann.
|
# Existieren im Repo NICHT zwingend (Root-.gitignore schließt sie komplett aus - lokal hatten
|
||||||
|
# sie bei mir Testdateien, ein frischer CI-Checkout hat sie gar nicht) - deshalb erst anlegen,
|
||||||
|
# dann Besitzer auf den Apache-User setzen, damit PHP dort schreiben kann.
|
||||||
|
&& mkdir -p \
|
||||||
|
/var/www/html/mitarbeiter-app-legacy/uploads \
|
||||||
|
/var/www/html/mitarbeiter-app-legacy/downloads \
|
||||||
|
/var/www/html/mitarbeiter-app-legacy/fortbildung-materials \
|
||||||
|
/var/www/html/mitarbeiter-app-legacy/assets/avatars \
|
||||||
|
/var/www/html/mitarbeiter-app-legacy/data \
|
||||||
&& chown -R www-data:www-data \
|
&& chown -R www-data:www-data \
|
||||||
/var/www/html/mitarbeiter-app-legacy/uploads \
|
/var/www/html/mitarbeiter-app-legacy/uploads \
|
||||||
/var/www/html/mitarbeiter-app-legacy/downloads \
|
/var/www/html/mitarbeiter-app-legacy/downloads \
|
||||||
|
|||||||
Reference in New Issue
Block a user