2016-09-20 6 views
0

ich diese Docker bin mit Befehlen:Wie verbinde ich Mysql Docker mit anderen Docker in Dockerfile?

docker network create --subnet=172.18.0.0/16 magentonet 
docker run -d --name mysql -p 3306:3306 --net magentonet --ip 172.18.0.23 -e MYSQL_ROOT_PASSWORD=magepass -e MYSQL_DATABASE=mySchema mysql:5 
docker build -t magento-bdd . 
docker run --net magentonet --ip 172.18.0.22 -d magento-bdd 

Wenn der Befehl docker build -t magento-bdd . läuft, ich habe diesen Befehl RUN da drin:

mysql --host=172.18.0.23 --user=root --password=magepass -e "create database magentodb; create user [email protected]; grant all privileges on magentodb.* to 'magentouser'@'%' IDENTIFIED BY 'magentopass'; flush privileges;" 

Das Problem, das ich jetzt stehen, ist, dass der Befehl endet mit ERROR 2003 (HY000): Can't connect to MySQL server on '172.18.0.23' (110)

Dies ist sinnvoll, weil ich den Container noch nicht mit dem Netzwerk verbunden habe (dies geschieht im run Befehl.

Wie kann ich schon etwas aus der Dockerfile in der Datenbank des vorherigen Build Docker speichern?

Antwort

0

docker build führt jede Anweisung in einem temporären Zwischenspeicher aus, und es gibt keine Möglichkeit, diesen Container mit Ihrem Docker-Netzwerk zu verbinden. Sie können daher den Container mysql nicht verwenden, wenn Sie ein neues Image erstellen.

Stattdessen würde ich zuerst ein benutzerdefiniertes Datenbankabbild erstellen, mit einer Dockerdatei, die FROM mysql startet und die Datenbankerstellungsskripts ausführt. Dann haben Sie ein bereits eingerichtetes Datenbankabbild, das Sie ausführen und eine Verbindung zu Ihrer App herstellen können.

Verwandte Themen