2014-02-10 24 views
6

Ich versuche, mysql in modifizierte ubuntu Bild zu laufen, die unter Datei Docker mit der Installation von Node.js und Grund mysql Installation includsMysql-Installation auf Docker Container

# Memcached 

# use the ubuntu base image provided by dotCloud 
FROM ubuntu/mysqlbase 
MAINTAINER Hitesh 

# make sure the package repository is up to dat//e 
#RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list 
#RUN apt-get update 

#RUN apt-get install -y mysql-client 
#ENTRYPOINT ["wc", "-l"] 
#ENTRYPOINT ["echo", "running"] 
ENTRYPOINT mysqld_safe & sleep 10 
#RUN mysql 
RUN echo "[mysqld]"      >/etc/mysql/conf.d/docker.cnf 
RUN echo "bind-address = 0.0.0.0"  >>/etc/mysql/conf.d/docker.cnf 
RUN echo "innodb_flush_method = O_DSYNC" >>/etc/mysql/conf.d/docker.cnf 
RUN echo "skip-name-resolve"    >>/etc/mysql/conf.d/docker.cnf 
RUN echo "init_file = /etc/mysql/init" >>/etc/mysql/conf.d/docker.cnf 
RUN echo "GRANT ALL ON *.* TO [email protected]'%'" >/etc/mysql/init 

USER root 

EXPOSE 3306 

auf diesem Server läuft unter Befehl

sudo docker run -p 3306:13306 mysql/dockerfiletest 

Nach Fehler aufgetreten

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

Kann jemand bitte schlagen Sie vor, was hier geändert werden muss. Ich möchte diesen Container verwenden, um mit einem anderen Container verbunden zu werden, der im Wesentlichen meine node.js-App ausführt.

+0

Ich denke, Sie müssen '-d' hinzufügen, damit es im Daemon-Modus läuft? Nicht sicher, obwohl – Gohn67

+0

Hinzufügen von -d funktioniert und öffnete den Port 11211, aber es ging nach 10 Sekunden. irgendeine Idee warum? – Hitesh

+0

Ich bin mir nicht sicher, wie Sie diesen Container verwenden - Sie legen den Memcached-Port offen, führen den MySQL-Server aus und installieren den MySQL-Client? Möchten Sie eine Verbindung zu Ihrem mysql-Server (im Docker-Container) von extern/host herstellen? Sie sollten dann den mysql-Port verfügbar machen. – Jiri

Antwort

2

UPDATE: Sie sollten Portnummer ausgesetzt Check - in Ihrem Beispiel ist (war) -Anschluss für Memcached (11211) und nicht der Port für MySQL (3306).


Wie dem auch sei, ich denke, dass Sie Ihre Dockerfile ändern müssen können - unnötige Schlaf in Einstiegspunkt entfernen:

ENTRYPOINT ["/usr/bin/mysqld_safe"] 

Dann sollten Sie Ihren Container auf diese Weise (Daemon-Modus) starten:

[email protected]:/# docker run -d -p 3306:<host port> <image id> 
+0

versucht das gleiche. Dint hat geklappt. Port starb nach 10 Sekunden. – Hitesh

+0

Anyway Ich habe versucht, Docker Bild mit meiner Modifikation ohne Schlaf zu bauen und es funktioniert gut. Ich kann mich ohne Probleme mit dem Host verbinden. – Jiri

+0

Dank Jiri, um darauf hinzuweisen, Sleep hier ist nur sicherstellen, dass mysqld_safe ist getan, die nicht notwendig sein, wie Sie hingewiesen haben. Mein Problem war wegen der zwischen memcache und mysql ports, die jetzt sortiert ist. – Hitesh

2

Antwort wurde bereits akzeptiert, aber ich denke, Sie könnten den Schlaf in Ihrem Einstiegspunkt verlassen, wenn Sie die '&' in '&ändern'. nicht sicher, ob docker den Eingangspunkt analysiert oder nur ausführt, aber bash behandelt '&' sehr anders als '& &'.

ENTRYPOINT mysqld_safe && sleep 10