{"id":16106092,"url":"https://github.com/clemenscodes/docker-kubernetes-class","last_synced_at":"2026-04-13T18:02:41.458Z","repository":{"id":48879577,"uuid":"373146891","full_name":"clemenscodes/docker-kubernetes-class","owner":"clemenscodes","description":"Repository das eine Dokumentation über den Aufbau von Dockerbefehlen zum Betrieb einer Nextcloud samt Mariadb enthält","archived":false,"fork":false,"pushed_at":"2021-07-07T11:30:25.000Z","size":811,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T03:14:04.842Z","etag":null,"topics":["docker","mariadb-mysql","nextcloud"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clemenscodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-02T11:41:52.000Z","updated_at":"2022-12-06T13:00:05.000Z","dependencies_parsed_at":"2022-08-19T16:20:22.378Z","dependency_job_id":null,"html_url":"https://github.com/clemenscodes/docker-kubernetes-class","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/clemenscodes/docker-kubernetes-class","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fdocker-kubernetes-class","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fdocker-kubernetes-class/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fdocker-kubernetes-class/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fdocker-kubernetes-class/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clemenscodes","download_url":"https://codeload.github.com/clemenscodes/docker-kubernetes-class/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fdocker-kubernetes-class/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31764317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","mariadb-mysql","nextcloud"],"created_at":"2024-10-09T19:11:58.577Z","updated_at":"2026-04-13T18:02:41.442Z","avatar_url":"https://github.com/clemenscodes.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Nextcloud MariaDB\n\n[![Docker Logo](images/1920px-Docker_(container_engine)_logo.svg.png \"Docker Logo\")](https://en.wikipedia.org/wiki/Docker_(software)#/media/File:Docker_(container_engine)_logo.svg) Abb.1\n\n## Dokumentation für die bewertete Hausübung 2\n\nGruppe 6: Clemens Horn, Niklas Schimmack, Julian Freundt\n\n# Inhaltsverzeichnis\n1. [Voraussetzungen](#voraussetzungen)\n2. [Benutzung](#benutzung)\n3. [Erläuterung MariaDB](#erläuterung-mariadb)\n4. [Erläuterung Nextcloud](#erläuterung-nextcloud)\n5. [Quellen](#quellen)\n\n## Voraussetzungen\n\nUnix-artiges Betriebssystem auf dem Docker installiert ist sowie ggf. Administrationsrechte.\n\nAuf Windows sollte Docker Desktop sowie ein Unix-Terminal-Emulator wie z.B. Git Bash installiert sein.\n\nDie Ports 80, 443 und 3306 müssen frei sein.\n\n## Benutzung\n\nUm dieses Projekt zu benutzen, muss das Projekt geklont und das Start Skript ausgeführt werden. Auf Unix müssen die Shellskripte Ausführungsrechte erhalten. Auf Windows sollten die Befehle zum Ausführen des Projekts per Git Bash erfolgen.\n\nAlternativ können die Dockerfiles auch manuell verwendet werden.\n\n### Windows\n\n```bash\n\ngit clone https://github.com/clemenshorn/docker-gcc.git\n\ncd docker-gcc\n\nscripts/start.sh\n\n```\n\n### Unix\n\n```bash\n\ngit clone https://github.com/clemenshorn/docker-gcc.git\n\ncd docker-gcc\n\nchmod -R +x scripts/ \n\nscripts/start.sh\n\n```\n\n## Erläuterung MariaDB\n\nEs war gefordert eine Nextcloud in einem Dockercontainer unter den Ports 80 und 443 bereitzustellen und eine Datenbank anzuschließen. Bei der Datenbank fiel die Wahl auf MariaDB/MySQL.\n\nDamit Nextcloud an eine Datenbank angeschlossen werden kann, muss diese vorher existieren, daher wird zunächst die Datenbank mittels Dockerfile definiert.\n\n```Dockerfile\nFROM mariadb\n\nVOLUME /var/lib/docker/volumes/db\n\nEXPOSE 3306\n```\n\n`FROM` bestimmt, dass das offizielle MariaDB-Image als Grundlage für den Datenbankcontainer dienen soll und `VOLUME` bestimmt `db` als Ordner für die Persistierung von Daten als Volumen in dem Standardverzeichnis, in dem Docker auf Unixsystemen Volumen speichert. Die Anwendung wird mittels `EXPOSE` auf dem Port 3306 innerhalb des Containers bereitgestellt.  \n\nUm aus diesem Dockerfile ein Image herzustellen, das in einem Dockercontainer ausgeführt werden kann, muss der `docker build` Befehl verwendet werden.\n\n```bash\ndocker build -t mariadb:gcc -f docker/mariadb.Dockerfile  .\n```\n\nDer `-t` Schalter bewirkt, dass das Image einen Tag bzw. Namen erhält, auf den man sich später beziehen kann und der `-f` Schalter bestimmt welcher Dockerfile verwendet werden soll. Der `.` am Ende des Befehls sagt aus von welchem Verzeichnis ausgehend Docker nach den Dockerfiles suchen soll. In diesem Projekt wird stets davon ausgegangen, dass die Befehle von der Wurzel des Projekts ausgeführt werden.\n\nAls nächstes wird mittels des `docker run` Befehls das Image in einem Container ausgeführt.\n\n```bash\ndocker run -d \\\n    --env-file env/mariadb.env \\\n    -p 3306:3306 \\\n    -v /var/lib/docker/volumes/db:/var/lib/mysql \\\n    --name mariadb \\\n    mariadb:gcc\n```\n\nDer `-d` Schalter bewirkt, dass der Container im Hintergrund ausgeführt wird und nicht in der Terminalsitzung, in der der Befehl ausgeführt wird. Der `--env-file` Schalter erlaubt die Angabe einer Datei, die die benötigten Umgebungsvariablen enthält, um eine MySQL-Datenbank zu initialisieren und `-p` bestimmt zunächst welcher Port des Hostbetriebssystems auf welchen Port des Containers gelegt werden soll, sodass eine Kommunikation zwischen Host und Container möglich wird. Der Schalter `-v` bestimmt nun welcher Ordner auf dem Hostsystem als Volumen genutzt werden soll und in welchem Ordner des Containers die Dateien abgelegt werden. Hierbei wurden die Standardpfade verwendet. Der Schalter `--name` bestimmt welchen Name der Container erhalten soll und als letztes wird bestimmt welches Image verwendet werden soll, dies wurde zuvor s.o. festgelegt.\n\n## Erläuterung Nextcloud\n\nMit der nun containerisierten Datenbank kann die Nextcloud mittels Dockerfile definiert werden.\n\n```Dockerfile\nFROM nextcloud\n\nVOLUME /var/lib/docker/volumes/nextcloud\n\nEXPOSE 80 443\n```\n\nDa die Nextcloud auf den Ports 80 und 443 zugänglich sein soll, wird dies entsprechend im Dockerfile definiert. Es wird das offizielle Nextcloud-Image verwendet, das die Grundlage für den Container bildet.\n\nDas Nextcloud-Image kann nun hergestellt werden.\n\n```bash\ndocker build -t nextcloud:gcc -f docker/nextcloud.Dockerfile .\n```\n\nNun kann das Image in einem Container ausgeführt werden und mit der Datenbank verknüpft werden.\n\n```bash\ndocker run -d \\\n    --env-file env/mariadb.env \\\n    --env-file env/nextcloud.env \\\n    --name nextcloud \\\n    -p 80:80 \\\n    -p 443:443 \\\n    -v /var/lib/docker/volumes/nextcloud:/var/www/html \\\n    --link mariadb:gcc \\\n    nextcloud:gcc\n```\n\nUm die Datenbank an die Nextcloud anzuschließen muss der `--link` Schalter verwendet werden sowie die Umgebungsvariablen für die Datenbank mittels `--env-file` angegeben werden. Um auf die Nextcloudanwendung auf mehreren Ports zugreifen zu können, muss der `-p` Schalter mehrmals entsprechend angegeben werden. Nach Ausführung dieses Befehls kann auf die Nextcloud dann im Browser unter `localhost:80` und `localhost:443` zugegriffen werden.\nDie Administrationsanmeldedaten können in der Datei `env/nextcloud.env` entsprechend angepasst werden.\n\nDas Skript `scripts/start.sh` führt alle erläuterten Befehle aus und stellt die Nextcloud bereit.\n\n![Nextcloud](images/nextcloud.png \"Nextcloud Anmeldebildschirm\")Abb. 2\n\n# Quellen\n## Literaturverzeichnis\nmariadb (2021): Docker Offical Images, in: docker hub. \u003chttps://hub.docker.com/_/mariadb\u003e (05.06.2021)\u003cbr\u003e\nnextcloud (2021): Docker Offical Images, in: docker hub. \u003chttps://hub.docker.com/_/nextcloud\u003e (05.06.2021)\u003cbr\u003e\ndocker (2021): Multi container apps, in: docker docs. \u003chttps://docs.docker.com/get-started07_multi_container/\u003e (05.06.2021)\u003cbr\u003e\ndocker (2021a): Persist the DB, in: docker docs. \u003chttps://docs.docker.com/get-started/05_persisting_data/\u003e (05.06.2021)\u003cbr\u003e\ndocker (2021b): docker build, in: docker docs. \u003chttps://docs.docker.com/engine/reference/commandline/build/\u003e (05.06.2021)\u003cbr\u003e\ndocker (2021c): docker run, in: docker docs. \u003chttps://docs.docker.com/engine/reference/commandline/run/\u003e (05.06.2021)\u003cbr\u003e\n\n## Abbildungsverzeichnis\nAbb.1: Docker Logo. \u003chttps://en.wikipedia.org/wiki/Docker_(software)#/media/File:Docker_(container_engine)_logo.svg\u003e .1\u003cbr\u003e\nAbb.2: Nextcloud Anmeldebildschirm. eigene Darstellung. 3 \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemenscodes%2Fdocker-kubernetes-class","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclemenscodes%2Fdocker-kubernetes-class","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemenscodes%2Fdocker-kubernetes-class/lists"}