Ich baue 2 Docker-Container mit Docker-Compose. Ich benutze Docker unter Mac, kein boot2docker.
version: '2'
services:
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
Alles funktioniert gut. Ich installiere Drupal erfolgreich.
Das Problem ist: Ich möchte SequelPro mit meiner DB verbinden, aber ich bekomme keine Verbindung zum Mysql-Container. Ich bin ein Anfänger im Docker. Danke für Ihre Hilfe Micha
Sie haben vergessen, Ihren DB-Port für den Host bereitzustellen, fügen Sie ihn also einfach hinzu
mysql-server:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
Verbinden Sie sich dann mit der Datenbank in Sequel mit:
user: root
password: root
Host: localhost
port: 3306
Wenn Sie bereits über eine lokale MySQL-Datenbank verfügen, ändern Sie den Port
ports:
- "4306:3306"
und verbinden Sie sich dann mit Port 4306
anstelle von 3306
. Beachten Sie, dass Sie aus dem Drupal-Container weiterhin 3306
verwenden.
Ordnen Sie den Host-Port 4306 (oder einen anderen verfügbaren Port) dem Docker-Mysql 3306 zu:
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
ports:
- "4306:3306"
Sie sollten in der Lage sein, sich mit dem Docker mysql mit 127.0.0.1:4306 zu verbinden
mysql -u drupal -h 127.0.0.1 -P 4306 -p
In meinem Fall habe ich ein Problem mit mysql: 8, wechsle zu 5 und alles ist in Ordnung
Sollte ein bisschen mehr aussehen:
version: '2'
services:
mysql-server:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql-server
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
(Ich bin nicht sicher, ob die Umgebungsvariablen auf globaler Ebene definiert werden, vielleicht kann jemand, der es weiß, meine Antwort hier korrigieren und sie vereinfachen.)
Wie Sie sehen, haben Sie 2 Dienste, MySQL-Server und Drupal-Web . Drupal-Web verlinkt Ihren Datenbankdienst. Beide Dienste verfügen über eigene Umgebungsvariablen.