Content
Dockerfile (Mysqldocker)
#Base image
FROM ubuntu:18.04
#Packetquellen aktualisieren
RUN apt-get update
#Mysql installieren (-y ohne Nachfrage)
RUN apt-get install -y mysql-server
#bind-address wird auskommentiert
#Mysql hört standardmäßig nur auf Anfragen vom gleichen Computer (localhost)
RUN sed -i 's/bind-address/#bind-address/g' /etc/mysql/mysql.conf.d/mysqld.cnf
#Zuerst wird mysql service gestartet, dannach für immer gewartet um den Container nicht zu beenden
CMD service mysql start && sleep infinity
Image erstellen
docker build -t mysqlimage:latest -f Mysqldocker ./
Persistenter Speicher für Container
Wird ein Container gestoppt, gelöscht und neu gestartet, so ist der komplette Inhalt weg. Das heißt, auch alle Datenbanken.
#Erstellt ein persistentes Volume (wird nicht gelöscht)
#docker volume create [volumename]
docker volume create mysqlvolume
Volume wird im Ordner /var/lib/docker/volumes abgelegt.
Container aus mysqlimage:latest erstellen
docker run -d -v mysqlvolume:/var/lib/mysql -p 12345:3306 --name mysqlcontainer mysqlimage:latest
Parameter -v [host volume or directory]:[container directory]
Nimmt erstelltes Volume (mysqlvolume) und mapped es im Container in den Ordner /var/lib/mysql. In diesem Ordner werden die Datenbanken und weiter Dateien gespeichert.
-v mysqlvolume:/var/lib/mysql
Parameter -p [host port]:[container port]
Mapped einen Port auf dem Hostsystem in den Container. 12345 ist der Port auf dem Host, 3306 der Port im Container.
-p 12345:3306
User erstellen in docker container
#Verbinden mit Container
docker exec -it mysqlcontainer bash
#Erstellen des Benutzers (Benutzer darf sich von überall anmelden mit %)
echo "CREATE user 'mondial'@'%' IDENTIFIED BY 'pwd';" | mysql
#Oder direkt eine Zeile ohne verbinden mit Docker Container
echo "CREATE user 'mondial'@'%' IDENTIFIED BY 'pwd';" | docker exec -i mysqlcontainer mysql
Verbinden mit Containerdatenbank vom Host
mysql --host=127.0.0.1 --port=12345 -u mondial -p
Sollte mysql auf dem Host nicht verfügbar sein so muss es installiert werden:
sudo apt-get install mysql-client