In diesen Beitrag wird das Erstellen eines Subversion Containers beschrieben
Voraussetzungen
- Grundkenntnisse im Umgang mit Linux und Docker
- Ein fertig installierter RaspberryPI mit betriebsbereitem docker
- Ein Verzeichnis in dem die Subversion Repositories abgelegt werden. In dieser Beschreibung wird das Verzeichnis /docker als Basisverzeichnis für diesen und zukünftige Container verwendet.
- Ein Verzeichnis zum Erstellen der Konfiguration für den Container und für die Scripte.
Zu Erstellende Dateien
- Dockerfile enthält die Daten zum Erstellen eines Docker Image
- build.sh ist ein Shell Script und vereinfacht das wiederholte Erstellen des Images
- run.sh ist ebenfalls ein Shell Script zur Vereinfachung des Erzeugens und Startes des Containers
Die Scriptdatein build.sh und run.sh sind nicht unbedingt erforderlich, werden jedoch aus Gründen der Bequemlichkeit und Wiederverwertung angelegt.
Benötigte Dateien erstellen
Dockerfile:
Zum Beginn wählt man als Basis eine Image aus, das für diesen Zwecke geeignet ist oder erstellt ein eigenes Basisimage. Für das Subversion Image wird als Basis das aarch64/alpine Image verwendet, da auf dem RaspberryPI die 64Bit Version des HypriotOS läuft und ein möglichst kleines Image erzeugt werden soll (Das fertige Image ist nur 13,9 MB groß).
FROM aarch/alpine
MAINTAINER Michael Kueper <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. >
LABEL version latest
LABEL description Simple Subversion Container
RUN apk update \
&& apk upgrade \
&& apk add subversion
VOLUME /var/svn
EXPOSE 3690:3690
CMD svnserve -d -r /var/svn/ --log-file /dev/stdout --foreground
build.sh:
#!/bin/bash
docker build -t blog/rpi-svn .
run.sh:
#!/bin/bash
docker run -d -p 3690:3690 -v /docker/blog-svn:/var/svn --name blog-svn --restart unless-stopped blog/rpi-svn
Angepasstes Image erstellen
Um den Container zu erzeugen wir das Script build.sh aufgerufen. Es erstellt aus dem Basisimage aarch64/alpine ein Image mit der im Dockerfile angegebenen Konfiguration. Während des build Vorgangs werden einige Informationen angezeit, an deren Ende eine Meldung dieser Art erscheinen sollte:
Successfully built 96f2cfda14c2
Nach dieser Meldung ist der Subversion Container erstellt und kann mit dem Script run.sh gestartet weden.
Nach dem Abschluss des Scripts erscheint eine Ausgabe ähnlich der folgenden:
5c46d120a5d6fb33589ed0cb66f68f7491320b6d9ee9abd034222336889769ae
Container erstellen und starten
Mit dem Befehl docker ps -a kann überprüft werden ob der Container korrekt gestartet wurde und läuft. Es sollte eine Ausgabe ähnlich der folgen erscheinen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c46d120a5d6 blog/rpi-svn "/bin/sh…" 29 sec.. Up 23 sec... ...:3690->3690 blog-svn
Erstellen eines Repository
Zum Erstellen eines neuen Repository nutzen wir den exec Befehl von docker
docker exec blog-svn svnadmin create /var/svn/neues_repository
Zur weiteren Konfiguration des Reposit kann im vorgegebenen Host Verzeichnis, in diesem Script /docker/blog-svn/neues_repository/, die weitere Konfiguration erfolgen.
Es muss festgelegt werden, auf welche Weise schreibberechtigte Benutzer sich Authentizieren müssen. Das wird in der Datei /docker/blog-svn/neues_repository/conf/svnserve.conf eingetragen. In diesem Fall soll das über eine Passwort Datei erfolgen.
[general]
### The anon-access and auth-access options control access to the
### repository for unauthenticated (a.k.a. anonymous) users and
### authenticated users, respectively.
### Valid values are "write", "read", and "none".
### Setting the value to "none" prohibits both reading and writing;
### "read" allows read-only access, and "write" allows complete
### read/write access to the repository.
### The sample settings below are the defaults and specify that
### anonymous users have read-only access to the repository, while authenticated
### users have read and write access to the repository.
# anon-access = read
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
Dazu müssen die beiden rot markiertenEinträge auth-access = write und password-db = passwd aktiviert werden.
Im nächsten Schritt müssen die schreibberechtigten Benutzer angelegt werden. Dieses wird In der Datei /docker/blog-svn/neues_repository/conf/passwd vorgenommen. Es ist darauf zu achten, dass die Passworte in dieser Datei im Klartext eingetragen werden.
[users]
marry = marrys_secret_password
<
Auf die gleiche Art und Weise können beliebige viele weitere Repositories angelegt werden.
Nachdem das Repositoty angelegt und konfiguriert ist, kann über das svn Protokoll darauf zugegriffen werden.
Beispiel:
svn co svn://your.server.address/neues_reposority