-
-
Save psct/bbb859d1767a8b990a6e27951859513e to your computer and use it in GitHub Desktop.
#!/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 |
... why not adding the command to add portainer in the "extern" network?
docker run --name portainer --network=extern -e "VIRTUAL_HOST=portainer.$MYDOMAIN" -d -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
Sorry, aber hat das eigentlich mal jemand getestet?
- In der Zeile
docker run -d --name blog --network=extern -v blogdata:/var/www/html -e "LETSENCRYPT_HOST=blog.$MYDOMAIN" -e "LETSENCRYPT_EMAIL=$MYUSER@$MYDOMAIN" volkerwiegand/serendipity
fehlt-e "VIRTUAL_HOST=blog.$MYDOMAIN"
. - ...und bei
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/directory
letsencrypt" jrcs/letsencrypt-nginx-proxy-companion
ist einletsencrypt
in die URL rein gerutscht, das dort nicht hin gehört.
@ Hr. Siering, das nennen Sie Subtile Fehler? Nicht einmal hier haben Sie es getestet oder?
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
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
"." vergessen auf Zeile 85 und 99?
falsch:
/usr/local/share/docker/gitweb_htpasswd
richtig:
/usr/local/share/docker/.gitweb_htpasswd