Seite 1 von 1

Schild-NRW3 in Docker betreiben

Verfasst: Montag 13. Mai 2024, 11:08
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. :)

Re: Schild-NRW3 in Docker betreiben

Verfasst: Freitag 26. Juli 2024, 11:57
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.

Re: Schild-NRW3 in Docker betreiben

Verfasst: Mittwoch 21. August 2024, 13:03
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 ...

Re: Schild-NRW3 in Docker betreiben

Verfasst: Freitag 21. März 2025, 17:46
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

Re: Schild-NRW3 in Docker betreiben

Verfasst: Dienstag 8. April 2025, 22:53
von RuedigerS
Das hört sich ziemlich gut an. Gibt es dazu schon eine Anleitung?

Re: Schild-NRW3 in Docker betreiben

Verfasst: Mittwoch 9. April 2025, 07:13
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.

Re: Schild-NRW3 in Docker betreiben

Verfasst: Donnerstag 10. April 2025, 09:01
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 ################################################################################################

Re: Schild-NRW3 in Docker betreiben

Verfasst: Donnerstag 10. April 2025, 11:26
von A. Schüller
Müsste es nicht
image: svwsnrw/svws-server:latest

anstatt
image: svwsnrw/svws-server:svwslatest

heißen?

Re: Schild-NRW3 in Docker betreiben

Verfasst: Freitag 11. April 2025, 09:29
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