Schild-NRW3 in Docker betreiben

Diskussionen rund um Schild-NRW3 (BETA)

Moderatoren: Raffenberg, A. Schüller, Pfotenhauer

Antworten
T. Pierick
Beiträge: 2
Registriert: Montag 29. April 2024, 10:24
Schulform: Schulträger

Schild-NRW3 in Docker betreiben

Beitrag von T. Pierick »

Hallo in die Runde,

da Schild-NRW3 laut mancher Aussagen Ende diesen / Anfang nächsten Jahres offiziell veröffentlicht werden soll, beschäftige ich mich derzeit damit, wie wir Schild-NRW3 am besten in unsere Schul-IT-Umgebungen integrieren.
Für uns ist die Umsetzung mit Docker sehr interessant, da es sich in unsere System gut integrieren lässt. Leider bekomme ich das Testsystem nicht richtig zum laufen.

Hier mein Problem:
Wenn ich den Docker Container erstellt habe und diesen starte, erhalte ich immer von dem MariaDB Container die Warnmeldung:

Code: Alles auswählen

[Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.3.2+maria~ubu2204 started.
[Warn] [Entrypoint]: /sys/fs/cgroup/name=systemd:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
28:misc:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
27:rdma:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
26:pids:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
25:hugetlb:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
24:net_prio:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
23:perf_event:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
22:net_cls:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
21:freezer:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
20:devices:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
19:memory:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
18:blkio:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
17:cpuacct:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
16:cpu:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
15:cpuset:/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a
0::/docker/7f6d3950c1a8bb8c82bae3b0641e7e06913b8f7f2534e75bc94bf75b28ec797a/memory.pressure not writable, functionality unavailable to MariaDB
, weshalb der SVWS-Server Container nicht startet, da der healthcheck nicht okay ist. Wenn ich den healthcheck ausklammere, starten beide Container durch.
Dennoch habe ich das Problem, dass sich nach einem erneuten Start der Container, der SVWS-Server Container immer damit beginnt, die Datenbank neu zu erstellen. Hier muss ich noch erwähnen, dass ich beim herunterfahren des SVWS-Server Containers, den Exitcode "Exited (137)" bekomme.
Hat jemand bereits Schild-NRW3 mit Docker Containern lauffähig und hat Tipps für mich, was ich bei den oben beschriebenen Problemen machen kann?

Hier der Inhalt der compose.yaml:

Code: Alles auswählen

version: "3"
services:
  mariadb:
    restart: always
    image: mariadb:11.3.2
    environment:
      MARIADB_ROOT_PASSWORD: "${MariaDB_ROOT_PASSWORD}"
      MARIADB_DATABASE: "${MariaDB_DATABASE}"
      MARIADB_USER: "${MariaDB_USER}"
      MARIADB_PASSWORD: "${MariaDB_PASSWORD}"
    env_file:
      - .env
    healthcheck:
      test: mysqladmin ping -h 127.0.0.1 -u $$MariaDB_USER --password=$$MariaDB_PASSWORD
      interval: 1s
      timeout: 5s
      retries: 10
    volumes:
      - svws-db:/var/lib/mysql/

  svws-server:
    image: svwsnrw/svws-server
    depends_on:
      mariadb:
        condition: service_healthy
    links:
      - mariadb
    ports:
      - "8443:8443"
    environment:
      MariaDB_HOST: "${MariaDB_HOST}"
      MariaDB_ROOT_PASSWORD: "${MariaDB_ROOT_PASSWORD}"
      MariaDB_DATABASE: "${MariaDB_DATABASE}"
      MariaDB_USER: "${MariaDB_USER}"
      MariaDB_PASSWORD: "${MariaDB_PASSWORD}"
    env_file:
      - .env
    volumes:
      - svws-app:/opt/app/svws/
      - svws-conf:/etc/app/svws/
volumes:
      svws-app:
      svws-conf:
      svws-db:
Hier der Inhalt der .env;

Code: Alles auswählen

MariaDB_ROOT_PASSWORD=********
MariaDB_DATABASE=schild
MariaDB_HOST=mariadb
MariaDB_USER=test
MariaDB_PASSWORD=********

TESTDB_PASSWORD=********
SVWS_TLS_KEYSTORE_CREATE=true
Zusätzlich hab ich noch eine Frage:
Auch, wenn in der Duko beschrieben ist, dass NAS-Systeme nicht unterstützt werden, ist es dennoch möglich einen Schild-NRW3 Docker Container auf z.B. einer Synology zu betreiben?

Vielen Dank schonmal für die Hilfe. :)
kroerig
Beiträge: 346
Registriert: Samstag 5. Januar 2019, 20:18
Schulform: - keine Schule -
Kontaktdaten:

Re: Schild-NRW3 in Docker betreiben

Beitrag von kroerig »

Hallo,

besteht das Problem noch? Ich betreibe hier eine SVWS Installation als Docker-Container. Allerdings nicht auf einem NAS sondern in einer Ubuntu VM oder das sollte hier keinen Unterschied machen.
"Der Computer rechnet mit allem - nur nicht mit seinem Besitzer." Dieter Hildebrandt
Benutzeravatar
Pfotenhauer
Beiträge: 3096
Registriert: Dienstag 25. September 2018, 12:53
Wohnort: Wuppertal
Schulform: Realschule
Motto: Wer schnell hilft, hilft doppelt!
Kontaktdaten:

Re: Schild-NRW3 in Docker betreiben

Beitrag von Pfotenhauer »

Wer Erfahrungen mit NAS und Docker gemacht hat, kann hier sehr gerne mal berichten!
Wir wären auch sehr daran interessiert, ob das ein möglicher Weg ist.
Momentan scheitere ich daran, wie man die docker-compose.yml auf einer Synology zu dem Image bereitstellt.
Dadurch findet der Container den Keystore nicht. Der SVWS-Server startet aber ...
Mit freundlichen Grüßen
Frank Pfotenhauer
---
Fachberater für die Schulverwaltungssoftware des MSB
Referat 135

E-Mail: frank.pfotenhauer@msb.nrw.de
mschoenen
Beiträge: 2
Registriert: Mittwoch 5. Februar 2025, 14:39
Schulform: Berufskolleg

Re: Schild-NRW3 in Docker betreiben

Beitrag von mschoenen »

Hallo,
ich habe diese Konfiguration erfolgreich auf einem Synology-NAS zum Laufen gebracht. Auch die persistenten Daten- und Konfigurationsordner sind in der FileStation sichtbar, so dass die Images aktualisiert werden können, ohne die Konfiguration und die Daten zu zerschießen. Viel Testen konnte ich bisher noch nicht.

docker-compose.yml:

Code: Alles auswählen

services:
    mariadb:
        image: mariadb:latest
        restart: always
        ports:
            - 3306:3306
        environment:
            - MARIADB_ROOT_PASSWORD=xxxxxx
            - MARIADB_DATABASE=svwsdb
            - MARIADB_USER=svwsadmin
            - MARIADB_PASSWORD=yyyyyy
            - MARIADB_DATA_DIR=/var/lib/mysql
            - MARIADB_LOG_DIR=/var/log/mysql
        volumes:
            - /volume1/DockerData/MariaDB/data:/var/lib/mysql
            - /volume1/DockerData/MariaDB/logs:/var/log/mysql
            - /volume1/DockerData/MariaDB/conf:/etc/mysql
        healthcheck:
            test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
            start_period: 10s
            interval: 10s
            timeout: 5s
            retries: 3
        networks:
            - svws-net

    svws-server:
        image: svwsnrw/svws-server:latest
        depends_on:
            mariadb:
                condition: service_healthy
        ports:
            - 8443:8443
        environment:
            - MARIADB_HOST=mariadb
            - MARIADB_ROOT_PASSWORD=xxxxxx
            - MARIADB_DATABASE=svwsdb
            - MARIADB_USER=svwsadmin
            - MARIADB_PASSWORD=yyyyyy
            - INIT_SCRIPTS_DIR=/opt/app/svws/init-scripts
            - SVWS_TLS_KEYSTORE_PATH=/etc/app/svws/conf/keystore
            - SVWS_CONF_DIR=/etc/app/svws/conf
            - SVWS_TLS_KEYSTORE_PASSWORD=zzzzzz
            - SVWS_TLS_KEY_ALIAS=svws-key
            - SVWS_TLS_KEYSTORE_CREATE=false
        volumes:
            - /volume1/DockerData/SVWS/init-scripts:/opt/app/svws/init-scripts
            - /volume1/DockerData/SVWS/conf/keystore:/etc/app/svws/conf/keystore
            - /volume1/DockerData/SVWS/conf:/etc/app/svws/conf
        networks:
            - svws-net
networks:
    svws-net:
        driver: bridge
my.cnf in dem Order, der als /etc/mysql gemappt wird (siehe docker-compose.yml)

Code: Alles auswählen

[mysqld]
bind-address = 0.0.0.0
svwsconfig-template.json in dem Ordner, der als /etc/app/svws/conf gemappt wird (siehe docker-compose.yml). Diese Datei findet man online unter
https://github.com/SVWS-NRW/SVWS-Server ... plate.json.
Allerdings muss man dort überall "Maria" in MariaDB auf Großschreibung ändern, sonst läuft es nicht.

Code: Alles auswählen

{
  "EnableClientProtection" : null,
  "DisableDBRootAccess" : false,
  "DisableAutoUpdates" : false,
  "DisableTLS" : null,
  "UseHTTPDefaultv11" : false,
  "PortHTTPS" : 8443,
  "PortHTTPPrivilegedAccess" : null,
  "UseCORSHeader" : false,
  "TempPath" : "tmp",
  "TLSKeyAlias" : "${SVWS_TLS_KEY_ALIAS}",
  "TLSKeystorePath" : "${SVWS_TLS_KEYSTORE_PATH}",
  "TLSKeystorePassword" : "${SVWS_TLS_KEYSTORE_PASSWORD}",
  "ClientPath" : "./client",
  "AdminClientPath" : "./adminclient",
  "LoggingEnabled" : true,
  "LoggingPath" : "logs",
  "ServerMode" : "stable",
  "PrivilegedDatabaseUser" : "root",
  "DBKonfiguration" : {
    "dbms" : "MARIA_DB",
    "location" : "${MARIADB_HOST}",
    "defaultschema" : "${MARIADB_DATABASE}",
    "SchemaKonfiguration" : [ {
      "name" : "${MARIADB_DATABASE}",
      "svwslogin" : false,
      "username" : "${MARIADB_USER}",
      "password" : "${MARIADB_PASSWORD}"
    } ]
  }
}
Für den allerersten Start des Systems muss die env-Variable SVWS_TLS_KEYSTORE_CREATE = true sein und im gemappten Ordner /opt/app/svws/init-scripts die Datei "create-keystore.sh" liegen (kann da liegen bleiben, wenn nach dem ersten Start der obige Schalter auf false gestellt wird. Dies Datei findet man online unter https://github.com/SVWS-NRW/SVWS-Server ... eystore.sh.

Wichtig ist noch, dass die Ordner auf dem NAS-System, die in die Container gemappt werden sollen, für den Owner beschreibbar sind (in den Berechtigungseinstellungen der FileStation für den jeweiligen Ordner das Recht "Owner-darf-lesen-und-schreiben" hinzufügen. Sonst gibt es beim Start der MariaDB einen "Permission denied" Fehler.

Zum Abschluss die Konfiguration start und warten, lange warten, bis die ganzen Einrichtungsdienste im Hintergrund durchgelaufen sind (siehe jeweils Container-Protokoll).

Viele Grüße Markus
RuedigerS
Beiträge: 1
Registriert: Montag 16. Januar 2023, 18:11
Schulform: Hauptschule

Re: Schild-NRW3 in Docker betreiben

Beitrag von RuedigerS »

Das hört sich ziemlich gut an. Gibt es dazu schon eine Anleitung?
Frodermann
Fachberater*in
Beiträge: 740
Registriert: Montag 29. Oktober 2018, 20:45
Schulform: Gesamtschule
Motto: Keine Panik

Re: Schild-NRW3 in Docker betreiben

Beitrag von Frodermann »

Die bisherige Dokumentation zu SVWS-Client und SVWS-Server finden Sie hier: https://doku.svws-nrw.de

Den Bereich zu Docker finden Sie unter Administration -> Installation.

Falls Ihnen etwas fehlt oder ungenau ist, melden Sie sich bitte mit Wünschen, wir arbeiten uns da durch alles (immer wieder ;)) durch.
mit freundlichen Grüßen
Felix Frodermann
Fachberatung, Moderation & SVWS-Dokumentation
FB_900121
Fachberater*in
Beiträge: 4
Registriert: Montag 1. Oktober 2018, 18:06
Schulform:

Re: Schild-NRW3 in Docker betreiben

Beitrag von FB_900121 »

Guten Morgen,
es ist uns gelungen den SVWS 1.0.5 mit der MariaDB 11.4.4 der Laufbahnplanung und dem Wenom in einen Docker-Container ans laufen zu bringen.
Doch leider kann man sich bei den Admin-Cient nicht Anmelden (root).
Liebe Grüße
Theo Richter
theo.richter@br.nrw.de

Hier der Inhalt meiner docker-compose-yml
###### ANFANG ################################################################################################
version: '3.8'
services:

mariadb:
restart: always
image: mariadb:11.4.4
environment:
MARIADB_ROOT_PASSWORD: "${MariaDB_ROOT_PASSWORD}"
MARIADB_DATABASE: "${MariaDB_DATABASE}"
MARIADB_USER: "${MariaDB_USER}"
MARIADB_PASSWORD: "${MariaDB_PASSWORD}"
volumes:
- ./mariadb/50-server.cnf:/etc/mysql/mariadb.conf.d/50-server.cnf
ports:
- "00001:3306"
env_file:
- .env
healthcheck:
test: ["CMD", "healthcheck", "--connect", "--innodb_initialized"]
interval: 1s
timeout: 5s
retries: 10
start_period: 20s


webserver:
container_name: WebServerName
depends_on:
mariadb:
condition: service_healthy
links:
- mariadb
build:
context: .
dockerfile: DockerfileApache
volumes:
- ./www:/var/www/html
- ./apache/apache2.conf:/etc/apache2/apache2.conf
- ./apache/default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf
- ./apache/000-default.conf:/etc/apache2/sites-available/000-default.conf
- ./php-fpm/apache/php.ini:/etc/php/8.2/apache2/php.ini
- ./php-fpm/php-fpm.conf:/etc/php/8.2/fpm/php-fpm.conf
- ./php-fpm/php.ini:/etc/php/8.2/fpm/php.ini
ports:
- 00002:80
- 00003:443

phpmyadmin:
container_name: PHPmyAdminName
depends_on:
mariadb:
condition: service_healthy
links:
- mariadb
volumes:
- ./ssl/certs/ssl-cert-snakeoil.pem:/etc/ssl/certs/ssl-cert-snakeoil.pem
- ./ssl/private/ssl-cert-snakeoil.key:/etc/ssl/private/ssl-cert-snakeoil.key
build:
context: .
dockerfile: DockerfilePHPmyAdmin
ports:
- "00004:443"
environment:
PMA_HOST: "${MariaDB_HOST}"
MYSQL_ROOT_PASSWORD: "${MariaDB_ROOT_PASSWORD}"
env_file:
- .env

svws-server:
image: svwsnrw/svws-server:svwslatest
depends_on:
mariadb:
condition: service_healthy
links:
- mariadb
ports:
- "00005:8443"
environment:
MariaDB_HOST: "${MariaDB_HOST}"
MariaDB_ROOT_PASSWORD: "${MariaDB_ROOT_PASSWORD}"
MariaDB_DATABASE: "${MariaDB_DATABASE}"
MariaDB_USER: "${MariaDB_USER}"
MariaDB_PASSWORD: "${MariaDB_PASSWORD}"
SVWS_TLS_KEY_ALIAS: "${SVWS_TLS_KEY_ALIAS}"
SVWS_TLS_KEYSTORE_PATH: "${SVWS_TLS_KEYSTORE_PATH}"
SVWS_TLS_KEYSTORE_PASSWORD: "${SVWS_TLS_KEYSTORE_PASSWORD}"
volumes:
- ./init-scripts:/etc/app/svws/init-scripts
- ./keystore:/etc/app/svws/conf/keystore/
- ./svwsconfig:/etc/app/svws/conf/
env_file:
- .env
###### ENDE ################################################################################################
A. Schüller
Beiträge: 943
Registriert: Mittwoch 10. Februar 2021, 21:30
Schulform: Gymnasium

Re: Schild-NRW3 in Docker betreiben

Beitrag von A. Schüller »

Müsste es nicht
image: svwsnrw/svws-server:latest

anstatt
image: svwsnrw/svws-server:svwslatest

heißen?
Mit freundlichen Grüßen
Anne Schüller
FB_900121
Fachberater*in
Beiträge: 4
Registriert: Montag 1. Oktober 2018, 18:06
Schulform:

Re: Schild-NRW3 in Docker betreiben

Beitrag von FB_900121 »

Die abgebildete Datei ist das Muster.
Durch ein Script wir aus svwslatest 1.0.5

Es klappt auch alles bis eben auf die Anmeldung beim Admin-Client.
Bei dem phpmyadin kann ich mich mit root und rootPassort anmelden.

LG Theo Richter
Antworten