web-dev-qa-db-de.com

Sequel Pro mit Mysql im Docker

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

12
freemindghost

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.

23
Eugen Mayer

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
5
Khaldoon Masud

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.

0
chickahoona