Erstellt: 2025-07-08
Ich bringe IT-Tools, Adminer und phpMyAdmin mittels Docker-Compose auf einem Klon eines von mir erstellten Alpine-LXC. Zuerst Klon erstellen und einige Werte anpassen:
- Ram: 512MB
- Disk-Space: 2GB
- Kerne: 1
Anschließend starte ich das LXC. Dort nun:
apk update && apk upgrade
apk add docker docker-cli-compose
rc-update add docker default
service docker start
it-Tools:
mkdir -p /opt/dockervolumes/it-tools
cd && cd /opt/dockervolumes/it-tools
nano docker-compose.yml
name: it-tools
services:
it-tools:
container_name: it-tools
image: corentinth/it-tools:latest
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8081"
protocol: tcp
restart: always
stdin_open: true
tty: true
networks:
default:
name: it-tools_default
Strg-x, y, Enter
cd && cd /opt/dockervolumes/it-tools && docker compose up -d
Quelle(n):
https://hub.docker.com/r/corentinth/it-tools
Aufruf im Browser:
LXC-IP:8081
Adminer:
mkdir -p /opt/dockervolumes/adminer
cd && cd /opt/dockervolumes/adminer
nano docker-compose.yml
name: adminer
services:
adminer:
image: adminer:latest
networks:
default: null
ports:
- mode: ingress
target: 8080
published: "8080"
protocol: tcp
restart: always
networks:
default:
name: adminer_default
Strg-x, y, Enter
cd && cd /opt/dockervolumes/adminer && docker compose up -d
Quelle(n):
https://hub.docker.com/_/adminer
Aufruf im Browser:
LXC-IP:8080
phpMyAdmin:
mkdir -p /opt/dockervolumes/phpmyadmin
cd && cd /opt/dockervolumes/phpmyadmin
nano docker-compose.yml
name: phpmyadmin
services:
phpmyadmin:
environment:
PMA_ARBITRARY: "1"
image: phpmyadmin
networks:
default: null
ports:
- mode: ingress
target: 80
published: "8082"
protocol: tcp
restart: always
networks:
default:
name: phpma_default
Strg-x, y, Enter
cd && cd /opt/dockervolumes/phpmyadmin && docker compose up -d
Quelle(n):
https://hub.docker.com/r/phpmyadmin/phpmyadmin
Aufruf im Browser:
LXC-IP:8082
.
Optional: Automatische Aktualisierung:
Zuerst installiere ich mein eigenes ALPINE-Script. Das Script kann hier eingesehen werden:
https://github.com/knilix/testareaalpine/blob/main/alpineautoupdateinstallscript.sh
apk add wget bash unzip
Folgende 2 Befehle komplett in der jeweiligen VM oder LXC einfügen:
wget -q -P /opt/ https://github.com/knilix/testareaalpine/archive/refs/heads/main.zip && unzip /opt/main.zip -d /opt/scriptfiles && chmod 700 /opt/scriptfiles/testareaalpine-main/alpineautoupdateinstallscript.sh
cd && cd /opt/scriptfiles/testareaalpine-main && ./alpineautoupdateinstallscript.sh
Wurden die 2 Befehle identisch übernommen, kann das erstellte Script in die Crontab eingetragen werden:
crontab -e
Folgendes am Ende dieser Datei einfügen, wenn das Update 02:10 Uhr stattfinden soll:
10 2 * * * /opt/scriptfiles/updatescript.sh >/dev/null 2>&1
Strg-x, y, Enter (wenn nano verwendet wird)
Anschließend ändere ich noch eine Datei:
nano /opt/scriptfiles/updatescript.sh
Folgendes ist bisher eingetragen:
#!/bin/bash
echo d=$(date +%y-%m-%d_%H:%M:%S) | tee -a /opt/scriptfiles/updatelog.txt
old_kernel=$(uname -r)
apk update
apk upgrade
new_kernel=$(uname -r)
# pruefen, ob sich die Kernel-Version geaendert hat
if [ "$old_kernel" != "$new_kernel" ]; then
reboot
else
exit
fi
Ich vervollständige diese Datei, dass sie am Ende so aussieht:
#!/bin/bash
#
# Update Docker-Compose
cd /opt/dockervolumes
readarray -d '' composeConfigs < <(find . -type f -name docker-compose.y* -print0)
for cfg in "${composeConfigs[@]}"; do
docker compose -f "$cfg" pull
docker compose -f "$cfg" up -d
done
# Alte Images automatisch löschen
docker image prune -f
#
# Update System
echo d=$(date +%y-%m-%d_%H:%M:%S) | tee -a /opt/scriptfiles/updatelog.txt
old_kernel=$(uname -r)
apk update
apk upgrade
new_kernel=$(uname -r)
# pruefen, ob sich die Kernel-Version geaendert hat
if [ "$old_kernel" != "$new_kernel" ]; then
reboot
else
exit
fi
Strg-x, y, Enter