2017-11-19 1 views
0

Ich bin ein 2. Jahr angewandte Informatik Student und ich habe einige Probleme mit der Konfiguration eines mysql Docker. Als eine Aufgabe müssen wir 2 Docker Bilder erstellen (1 mit Apache/PHP und eine einfache PHP-Webseite und eine andere mit MySQL). Ich habe das apache/php docker bereits erstellt, was nicht so schwer war, aber ich habe mit mysql ziemlich viel zu tun.Probleme mit der Konfiguration von mysql/mysql-server dockerfile

Dateien

./Dockerfile 
./test.sql 

Dockerfile

FROM mysql/mysql-server 

ENV MYSQL_ROOT_PASSWORD=lindert 

RUN mkdir /usr/sql 
RUN chmod 644 /usr/sql 
ADD test.sql /usr/sql/test.sql 

run MYSQL -u root -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE \ 
shippingdb" && mysql -u root -p${MYSQL_ROOT_PASSWORD} shippingdb < 
/usr/sql/test.sql 

Wenn ich laufen 'Docker zu bauen.' Diese Fehlermeldung erscheint:

mysql: [WARNING] Using a password on the command line interface can be 
insecure. 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket 
'/var/lib/mysql/mysql.sock' (2) 

Ich habe keine Ahnung, wie dieses Problem zu beheben, habe ich jetzt für 3 Stunden wurde googeln und ich habe die Antwort noch nicht gefunden, wäre schön, wenn jemand helfen könnte. Danke!

+0

Ich glaube nicht, dass der SQL-Dienst während des Build-Prozesses ausgeführt wird. Wahrscheinlich möchtest du den letzten RUN-Befehl aus deiner Docker-Datei entfernen und den PHP-Container verbinden lassen und die Datenbank initialisieren. Das ist normalerweise nichts, was du während des Build-Schritts tun würdest, zumindest meiner Erfahrung nach. – DivXZero

+0

Ich hatte eine ähnliche Erfahrung mit Postgres, aber dies könnte Sie in die richtige Richtung gehen. Ich habe versucht, während des Builds so etwas zu machen, aber natürlich läuft Postgres nicht während des Builds. Hier versuchen Sie vielleicht, einen mysql-Befehl auszuführen, aber mysql läuft nicht bis zu [docker-entrypoint.sh] (https://github.com/docker-library/mysql/blob/master/8.0/docker) -entrypoint.sh) wird ausgelöst, wenn Sie das Bild tatsächlich ausführen. – bluescores

Antwort

0

Mounten Sie Ihre SQL-Datei auf '/docker-entrypoint-initdb.d' Pfad und es wird importiert. Legen Sie Ihre 'CREATE DATABASE' Anruf in der SQL-Datei

IE: Dockerfile und SQL-Dateien in Ihrer Arbeits/root dir

FROM mysql/mysql-server 

ENV MYSQL_ROOT_PASSWORD=lindert 

RUN mkdir /usr/sql 
RUN chmod 644 /usr/sql 
VOLUME ./ /docker-entrypoint-initdb.d 

Diese auf der Docker Hub-Seite für die offizielle mysql Bild erwähnt wird https://hub.docker.com/_/mysql/

Verwandte Themen