Mein vorhandenes docker run command für wikijs
docker run -d --name=wikijs -e PUID=5004 -e PGID=5005 -e TZ=Europe/Berlin -e "DB_TYPE=postgres" -e "DB_HOST=HOSTIP4" -e "DB_PORT=5432" -e DB_NAME=wikijsdb -e DB_USER=wikijs -e 'DB_PASS=PASSWORT' -p 2123:2123 -v /docker/wikijs/config:/config -v /docker/wikijs/data:/data --restart unless-stopped linuxserver/wikijs:latest
Ergibt dann mit dem online dienst https://www.composerize.com/
name: <your project name>
services:
wikijs:
container_name: wikijs
environment:
- PUID=5004
- PGID=5005
- TZ=Europe/Berlin
- DB_TYPE=postgres
- DB_HOST=HOSTIP4
- DB_PORT=5432
- DB_NAME=wikijsdb
- DB_USER=wikijs
- DB_PASS=PASSWORT
ports:
- 2999:2999
volumes:
- /docker/wikijs/config:/config
- /docker/wikijs/data:/data
restart: unless-stopped
image: linuxserver/wikijs:latest
Ich habe die Datei in ein Directory wikijs als docker-compose.yml gelegt.
Nun mit docker commit wikijs backup-wikijs
eine akuelle sicherung des containers anfertigen
und mit docker stop wikijs den laufenden Container stoppen
und umbenennen.
docker rename wikijs wikijs_letztes_mit_docker_run
Das stellt sicher, dass es keine namens Konflikte mit dem docker-compose gibt.
Nun kann ein erster Start erfolgen:
docker-compose up -d
das "-d" führt detached aus.
docker-compose logs -f
Wenn dann keine Fehlermeldungen kommen, ok.
Bei Fehlermeldungen wie z.B. bei mir:
Database Initialization Error: no pg_hba.conf entry for host "172.19.0.2", user "wikijs", database "wikijsdb", SSL off
In einer weiteren Terminal Sitzung mit einem Editor die Datei /etc/postgresql/13/main/pg_hba.conf
öffnen und die IP Adresse auswechseln. Vermutlich, weil der alte container nur gestopt wurde und nicht gelöscht wurde, ist eine neue IP Adresse für das docker-compose wikkijs verwendet worden.
Nach dem ändern kann mit
service postgresql reload
Die Datenbank veranlasst werden die Konfiguration neu zu laden.
In dem laufenden docker-compose logs -f wird nun in sehr kurzer Zeit auftauchen, dass der Datanbank Zugriff nun funktioniert und wikijs gestartet sein.
mit docker ps -a|grep wikijs gucken, was da noch so an Altlasten rumliegen
5cc5dd4ac900 linuxserver/wikijs:latest "/init" 39 minutes ago Up 39 minutes 0.0.0.0:2999->2999/tcp, :::2999->2999/tcp, 3000/tcp wikijs
b400e43611d5 linuxserver/wikijs:latest "/init" About an hour ago Exited (137) 40 minutes ago wikijs_letztes_mit_docker_run
8bdf5d4e3736 linuxserver/wikijs:latest "/init" About an hour ago Created wikij_b
f3d9174c7df0 e60a0355404b "/init" 4 weeks ago Exited (137) About an hour ago wikijs_2a
e44dd19ba910 22bb0cf1c31d "/init" 7 months ago Exited (255) 4 weeks ago 0.0.0.0:2999->2999/tcp, 3000/tcp wikijs_a
99fdecaa2025 22bb0cf1c31d "/init" 7 months ago Exited (137) 7 months ago wikijsAlt2
44f5a20c95c6 fd6a9621ac7a "/init" 8 months ago Exited (137) 7 months ago
Die Container die nicht mehr gebraucht werden, mit z.B.
docker container rm 44f5a20c95c6
usw.
Das sollte ohne --force klappen, wenn nicht, nochmal genauer gucken!
Jetzt sollte alles erledigt sein und wikijs nun nur noch mit docker.compose gemanaget
werden.
Ich verwende ein python Script, dass aus dem laufenden Container eine docker-compose erzeugt
Überholt, ich nutze https://www.composerize.com/
Installion:
apt install python3-pip
git clone https://github.com/Red5d/docker-autocompose.git
cd docker-autocompose
Jetzt den name des gewünschten Containers finden:
docker ps
Zum Beisiel: Ausgabe verkürzt die ports sind ausgelassen
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES NAMES
063e2549116a linuxserver/heimdall:latest "/init" 14 minutes ago Up 13 minutes heimdalllatest
af3e5a608305 4af0c16be4b1 "docker-entrypoint.s…" 11 days ago Up 11 days mariadb5
f3d9174c7df0 linuxserver/wikijs:latest "/init" 11 days ago Up 11 days wikijs2
fb4b484f349d lscr.io/linuxserver/hishtory-server:latest "/init" 6 months ago Up 11 days hishtory-server
autocompose.py 063e2549116a >/root/heimdall/docker-compose.yml
Das geht auch mit namen, eindeutiger ist aber die CONTAINER ID
~~autocompose meint es sehr gut mit dem Auslesen der Environment Daten, da kann und muß einiges weg.
Ich habe einen neuen Ordner /root/heimdall/ angelegt und docker-compose.yml dorthin kopiert.
also ~~
mkdir /root/heimdall/
cp docker-compose.yml /root/heimdall/
cd /root/heimdall/
nano docker-compose.yml
Die folgenden Zeilen aus dem kopierten docker-compose.yml entfernen.
- "PS1=(hostname): " ## führt zu Fehler, brauchen wir eh nicht
"HOME=/root"
- "TERM=xterm"
- "S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0"
- "S6_VERBOSITY=1"
- "S6_STAGE2_HOOK=/docker-mods"
- "VIRTUAL_ENV=/lsiopy"
- "LSIO_FIRST_PARTY=true"
- "S6_BEHAVIOUR_IF_STAGE2_FAILS=2"
hostname: "55c96c9eb376"
org.opencontainers.image.ref.name: "bbecc0b09aac63019487719c0d1e6524c6d312fd"
org.opencontainers.image.revision: "bbecc0b09aac63019487719c0d1e6524c6d312fd"
Zur Kontrolle mal mit docker-compose config die Syntax prüfen
Nun auch gleich den laufenden Container, hier Heimdall stoppen mit
docker heimdall:latest stop
Damit wäre eigentlich alles vorbereitet, allerdings lagen noch masenhaft tote container rum, die den Start behinderten.
Die habe ich so entfernt:
# docker ps -a|grep heimdall
55c96c9eb376 linuxserver/heimdall:latest "/init" 48 minutes ago Exited (0) 18 minutes ago heimdalllatest
c97a52a25da3 44557460e02d "/init" 8 months ago Exited (0) 59 minutes ago heimdall-development-version-60faccad
3481a36e25b9 a2ab6a3afea7 "/init" 8 months ago Exited (0) 8 months ago heimdall_latest
5fc64435bfc2 4f75c23b5c16 "/init" 8 months ago Exited (0) 8 months ago heimdall_dev
5e39d65bf274 7a8cc6e2a554 "/init" 8 months ago Exited (0) 8 months ago heimdall2415
ac7425022352 6c4da03d5e62 "/init" 8 months ago Exited (0) 8 months ago heimdall
root@isp ~/heimdall #
# docker container rm 55c96c9eb376 --force
55c96c9eb376
root@isp ~/heimdall # docker container rm c97a52a25da3 --force
c97a52a25da3
# So oft wiederholen bis keine container mehr mit heimdall auftauchen
Nun nochmal die images kontrollieren, das sollte alles mit heimdall Bezug weg sein
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-compose up --detach
Creating heimdalllatest ... (output gelöscht) done
Attaching to heimdalllatest
heimdalllatest | [migrations] started
heimdalllatest | [migrations] 01-nginx-site-confs-default: skipped
heimdalllatest | [migrations] 02-default-location: skipped
heimdalllatest | [migrations] done
heimdalllatest | ───────────────────────────────────────
heimdalllatest |
heimdalllatest | ██╗ ███████╗██╗ ██████╗
heimdalllatest | ██║ ██╔════╝██║██╔═══██╗
heimdalllatest | ██║ ███████╗██║██║ ██║
heimdalllatest | ██║ ╚════██║██║██║ ██║
heimdalllatest | ███████╗███████║██║╚██████╔╝
heimdalllatest | ╚══════╝╚══════╝╚═╝ ╚═════╝
heimdalllatest |
heimdalllatest | Brought to you by linuxserver.io
heimdalllatest | ───────────────────────────────────────
heimdalllatest |
heimdalllatest | To support LSIO projects visit:
heimdalllatest | https://www.linuxserver.io/donate/
heimdalllatest |
(... Output gelöscht)
heimdalllatest | [custom-init] No custom files found, skipping...
heimdalllatest | [ls.io-init] done.
Damit rennt nun der Container, was z.B.
docker-compose heimdalllatest ps
oder
docker-compose heimdalllatest top
bestätigt
Das ist aber bei komplizierteren Container fehlerträchtig.
Sehr gut ist der Onlinedienst
https://www.composerize.com/
Dazu braucht man allerdings ein vollständiges cmdline
docker run Command
Damit erspart man sich das entfernen unnötiger env Variablen
Tipp: bei mariadb ist seit 10.x irgendwas der default, dass die bind-adress auf 17.0.0.1
eingestellt ist.
Klar, man kann in den Container wechseln, nano nach installieren und die bind-address auf 0.0.0.0 setze.
dann ein commit, sost vergist man es evtl. und gut
Es geht aber auch per docker-compose.yml
in dem man die bind-address über den Port definiert
ports:
- 0.0.0.0:3307:3306
Beispielsweise wikijs
alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /.config:/.config/jesseduffield/lazydocker lazyteam/lazydocker'