2016-09-19 13 views
0

Derzeit habe ich einen Docker-Container, der eine Webseite (meist PHP) hostet. Momentan ist die Datenbank auf einem Server in AWS gespeichert. Für Entwicklungszwecke möchte ich eine lokale Datenbank im Docker-Container erstellen. Ich habe etwas gegoogelt und es scheint, als ob die meisten Leute empfehlen, einen ganzen separaten Container für das Hosting von MySQL zu erstellen. Da dies nur eine Datenbank für die Entwicklung ist, frage ich mich, ob ich den Aufwand vermeiden kann, einen anderen Container einzurichten und MySQL direkt in den Container zu legen, der die Webseite hostet. Um dies zu tun habe ich versucht, die Installation von MySQL-Server:MySQL in Docker Container

sudo apt-get install mysql-server 

Mysql installiert fein dies zu tun. Dann habe ich versucht, die MySQL-interaktive Shell auszuführen:

mysql -u root -p 

Als ich das tat, bekam ich folgende Fehlermeldung ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Kann ich die mysql in der gleichen Docker Container laufen oder werde ich brauche eine erstellen einen trennen?

+0

hi @ tyler-hilbert, hast du versucht mysql -u root -p? –

+0

@Andy K um ja, das ist der Befehl, der den Fehler in der Frage –

+0

sorry @ tyler-hilbert gab sehr spät hier. Ich werde morgen einen Blick werfen. –

Antwort

3

Es gibt wirklich keinen Aufwand, separate MySQL-Container einzurichten. Wirklicher Aufwand ist es, es in vorhandenen Container zu installieren.

Ich würde empfehlen, dass Sie Docker komponieren Datei erstellen und Anwendung und Datenbank-Container definieren (stellen Sie sicher, dass Docker komponieren in Ihrer Entwicklungsumgebung installiert ist, in den meisten Fällen sollte es bereits installiert sein).

Erstellen Sie eine Datei Docker-compose.yml (Sie können es im selben Ordner erstellen, in dem Dockerfile für Sie projizieren, in der Regel Ordner Projekt root) mit folgendem Inhalt:

version: '2' 
services: 
    app: 
    image: your_app_docker_image_name 
    ...more config options depending on your project (volumes, ports, etc) 
    db: 
    image: mariadb 
    volumes: 
     - './user/db:/var/lib/mysql' 
    environment: 
     - MYSQL_ALLOW_EMPTY_PASSWORD=true 

Projekt Lauf starten

Dies hebt Ihren App-Container und separate MySQL-Container (ohne Root-Passwort absichtlich, da dies für Dev-Zweck ist). Jetzt können Sie MySQL-Server von Ihrem App-Container wie diese

mysql -h db -u root 

Docker Mit komponieren zugreifen können Sie ganz einfach komplexe Umgebungen Setup. Bei der Bereitstellung in einer Produktionsumgebung oder einer anderen Testumgebung müssen Sie Ihre Docker-Datei nicht ändern.

1

Es gibt viele Profis, separate Container für jeden Dienst zu haben. Um php + apache + mysql im selben Container zu haben, muss man entweder ein Bild wie dieses finden https://github.com/tutumcloud/lamp, oder es selbst aus einer Dockerfile erstellen.

Aber versuchen Sie sich vorzustellen, eines Tages entscheiden Sie, Ihre DB-Speicher-Engine von Mysql nach Percona oder Maria zu wechseln, oder Sie möchten Memcached/Redis für Ihre Anwendung verwenden. Beides ist kein Problem, wenn Sie Ihre Dienste als separate Container haben.

Verwandte Themen