This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
exit 0 | |
# Die Befehle aus einem Praxis-Artikel zu Docker aus | |
# c’t 2017, Heft 15, S. 110 | |
# in Form eines Shell-Skripts der Lesbarkeit halber | |
# FIX: Weist auf Fehler in den Befehlszeilen im Artikel hin. | |
# Die Datei /etc/apt/sources.list ergänzen um: | |
deb https://download.docker.com/linux/debian stretch stable | |
## Docker einrichten: | |
apt-get install apt-transport-https | |
apt-get install curl | |
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - | |
apt-get update | |
apt-get install docker-ce | |
## Funktionstest | |
docker run hello-world | |
# Folgende Befehle vereinfachen die Nutzung | |
# der anschließenden Befehlszeilen aus dem Artikel | |
export MYDOMAIN=example.com | |
export MYUSER=joeuser | |
export LETSENCRYPT_EMAIL=$MYUSER@$MYDOMAIN | |
# Die eigentlichen Befehle aus dem Artikel sind ergänzt | |
# um die zuvor gesetzten Umgebungsvariablen. | |
# Erste Gehversuche mit gitweb: | |
docker search gitweb | |
docker pull fraoustin/gitweb | |
docker run -d --name gitweb fraoustin/gitweb | |
docker exec gitweb addauth test test | |
docker exec gitweb addrepos test | |
docker inspect gitweb | more | |
# Zugriff im Browser mit SOCKS-Proxy auf meist 172.17.0.2 sollte gelingen. | |
# Aufräumen - Volume-Reste anzeigen und wegräumen: | |
docker volume ls --filter dangling=true | |
docker volume prune | |
# Neuer Start jetzt mit benannten Volumes und der Datei | |
# für die Zugangsdaten der Benutzer (htpasswd), die mit | |
# dem ersten Befehl angelegt wird: | |
mkdir -p /usr/local/share/docker; touch /usr/local/share/docker/.gitweb_htpasswd | |
docker run -d --name gitweb -v gitwebrepos:/var/lib/git -v /usr/local/share/docker/.gitweb_htpasswd:/etc/nginx/.htpasswd fraoustin/gitweb | |
docker exec -it gitweb /bin/sh | |
# Vorbereitung für den Betrieb hinter dem nginx_proxy-Container, | |
# Enrichten eines User Defined Network: | |
docker network create extern | |
docker network disconnect docker0 gitweb | |
docker network connect extern gitweb | |
# Vor den nächsten Schritten muss gitweb weggeworfen sein (FIX: der Artikel | |
# ist da unpräzise und spricht nur von Beenden): | |
docker stop gitweb | |
docker rm gitweb | |
## Proxy starten: | |
docker run -d --name nginxproxy --network=extern -v /var/run/docker.sock:/tmp/docker.sock:ro -p 80:80 -p 443:443 -v nginxproxy_certs:/etc/nginx/certs:ro -v nginxproxy_vhosts:/etc/nginx/vhost.d -v nginxproxy_html:/usr/share/nginx/html --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true jwilder/nginx-proxy | |
# FIX: Der Artikel enthält vor dem ersten "-v" leider einen Bindestrich zu viel, also --v statt -v. | |
## Jetzt gitweb gegen den Proxy starten: | |
docker run -d --name gitweb --network=extern -v gitwebrepos:/var/lib/git -v /usr/local/share/docker/gitweb_htpasswd:/etc/nginx/.htpasswd -e "VIRTUAL_HOST=gitweb.$MYDOMAIN" fraoustin/gitweb | |
# FIX: Im Artikel fehlt das schließende Anführungszeichen hinter -e "VIRTUAL_HOST ...". | |
## Jetzt den Zertifikatsbeschaffer: | |
docker run -d --name nginxproxy_comp -v /var/run/docker.sock:/var/run/docker.sock:ro -v nginxproxy_certs:/etc/nginx/certs:rw --volumes-from nginxproxy -e "ACME_CA_URI=https://acme-staging.api.letsencrypt.org/directoryletsencrypt" jrcs/letsencrypt-nginx-proxy-companion | |
# FIX: Das erste "Volume" bzw. der Socket muss mit /var/run/docker.sock und nicht /tmp/docker.sock im Container verbunden werden. | |
# (Die Option "-e "ACME_CA_URI=https://acme-staging.api.letsencrypt.org/directory"" empfiehlt | |
# sich für Testinstallationen und spuckt Testzertifikate statt regulärer aus, mehr dazu hier: | |
# https://letsencrypt.org/docs/staging-environment/ - so bekommt man keine Probleme mit dem Zertifikatslimit von fünf pro Woche). | |
docker run -d --name gitweb --network=extern -v gitwebrepos:/var/lib/git -v /usr/local/share/docker/gitweb_htpasswd:/etc/nginx/.htpasswd -e "VIRTUAL_HOST=gitweb.$MYDOMAIN" -e "LETSENCRYPT_HOST=gitweb.$MYDOMAIN" -e "LETSENCRYPT_EMAIL=$MYUSER@$MYDOMAIN" fraoustin/gitweb | |
# FIX: Auch hier fehlte am Ende der ersten Umgebungsvariable das schließende Anführungszheichen." | |
## Blog, Datenbank starten: | |
docker run -d --name blogsql --network=extern -v blogsql:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD=test" mysql:5.7 | |
## Eigtl. Blog-Software: | |
docker run -d --name blog --network=extern -v blogdata:/var/www/html -e "LETSENCRYPT_HOST=blog.$MYDOMAIN" -e "LETSENCRYPT_EMAIL=$MYUSER@$MYDOMAIN" volkerwiegand/serendipity | |
## ftp-Server mit veröffentlichten! Ports: | |
docker run -d --name ftp -p 21:21 -p 4559-4564:4559-4564 -v vsftpddata:/srv -v vsftpdetc:/etc/vsftpd panubo/vsftpd | |
## "Update-Container" - mit zuvor erwähnter Restart-Option: | |
docker run -d --restart=unless-stopped --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower |
Auf dem Mac macht man das Dockerimage so unter localhost erreichbar:
docker run -p 80:80 -d --name gitweb fraoustin/gitweb
Die docker0 network brudge wird auf dem Mac so nicht erstellt.
Vielleicht hilft es ja auch mal jemand anderem.
LG, Chris
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi und vielen Dank für den Artikel.
Was ist denn wenn nach Eingabe von 172.17.0.2 (Die Adresse, die man nach Eingabe von "docker inspect gitweb | more" angezeigt bekommt) im Browser einfach nichts passiert? Nur ein "Failed to open Page" nach einiger Zeit.
In dem Ct Artikel steht "Sie können diese Adresse (<172.17.0.2>) direkt im Browser auf dem host eintippen..."
Ich probiere Docker auf einem Macbook. Hat das vielleicht einen Einfluss?
LG, Chris