Hallo,
anbei die versprochene Docker Installation von iobroker und MySQL. Es wird von einer existierenden Docker Installation 17.12.0-ce auf Ubuntu 17.x ausgegangen.
Um eine saubere Trennung zwischen SQL DB und iobroker zu haben, verwende ich zwei Docker Images.
Weiterhin habe ich ein eigenes Docker Netzwerk erzeugt, dass dann von MySQL und iobroker exclusiv genutzt wird. Vorteil davon ist eine Nutzung mit Hostname statt mit Docker IP Adressen (die sich ändern können). Siehe auch ersten Lösungsansatz mit fest IP Adressen wie "172.17.0.3".
Das Ganze ist vielleicht ein bisschen viel Kommandozeile/CLI, aber auf der anderen Seite kann man diese Beispiele auf jedem Docker Host durchführen. Eine schöne GUI wie auf der Diskstation gibt es eben nur auf der Diskstation. Die CLI hat auch den Vorteil einer tieferen Debug Möglichkeit.
Sehr gut hat mit Portainer gefallen, eine sehr nützliche Web UI für Docker.
BTW, die Namen wie "steve/sql" oder "my-custom-net" sind nicht sehr originell und können natürlich individuell geändert werden.

<size size="150">Details:</size>
iobroker Docker Image:
https://hub.docker.com/r/salenss/iobroker/
iobroker auf Diskstation von Andre:
https://buanet.de/2017/09/iobroker-unte … skstation/
Connect to MySQL from an Application in Another Docker Container:
https://dev.mysql.com/doc/refman/5.7/en … opics.html
MySQL Docker Containers: Understanding the basics:
https://severalnines.com/blog/mysql-doc … ing-basics
<size size="150">Portainer:</size>
-
Optionale Installation: "docker run -d -p 9000:9000 –restart always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer"
-
Im Browser mit http://<ubuntu host/ip="">:9000 aufrufen.
<size size="150">Weiteres/eigenes Docker Netzwerk:</size>
- "docker network create my-custom-net"
<size size="150">MySQL:</size>
-
docker run –detach --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" mysql
-
MySQL Client auf Ubuntu installieren ("apt-get install mysql-client")
-
Mittels "mysql -uroot -pmypassword -h 172.17.0.5 -P 3306" die Änderungen wie für iobroker.sql durchführen
-
Dann mit "docker ps" die ID des MySQL Containers herausfinden.
-
Wir können damit dann die Änderungen im MySQL Container in einem neuen Docker Image festhalten "docker commit <container id="">steve/sql"
-
Mit docker images nachsehen ob es das neuen Docker Image "steve/sql" gibt.
-
Den bisherigen MySQL Container stoppen "docker stop <container id="">"
-
Neustart mit dem gerade angelegten Docker Netzwerk "docker run --name=sql01 --network=my-custom-net -d steve/sql"
-
Falls Ihr MySQL von ausserhalb des Docker Container bzw. Docker Netzwerk ansprechen wollt dann muss der Port freigegeben werden
"docker run --name=sql01 --network=my-custom-net -p 3306:3306 -d steve/sql". Dies ist innerhalb der beiden Docker Containers nicht
notwendig.
<size size="150">iobroker:</size>
-
docker run –hostname iobroker -d -p 8081:8081 -p 8082:8082 -p 8087:8087 -it salenss/iobroker
-
Anschließend den Browser mittels http://<ubuntu ip="">:8081 aufrufen und Änderungen/Konfigurationen vornehmen.
-
Eine der Konfigurationen ist der iobroker.sql Adapter, dort als Host "sql01" und Port "3306" eintragen, den Rest wie gehabt.
-
Dann mit "docker ps" die ID des iobroker Containers herausfinden.
-
Wir können damit dann die Änderungen im iobroker Container in einem neuen Docker Image festhalten "docker commit <container id="">steve/iobroker"
-
Mit docker images nachsehen ob es das neuen Docker Image "steve/iobroker" gibt.
-
Den bisherigen iobroker Container stoppen "docker stop <container id="">"
-
Neustart mit dem gerade angelegten Docker Netzwerk "docker run --hostname iobroker --network=my-custom-net -d -p 8081:8081 -p 8082:8082 -p 8087:8087 -it steve/iobroker"
Next Steps:
Als nächstes überlege ich ob ich das Verzeichnis "/opt/iobroker" auf den Host auslagern soll, wie es Andre gemacht hat.
Steve</container></container></ubuntu></container></container></ubuntu>