web-dev-qa-db-fra.com

Suite Pro avec Mysql dans Docker

Je construis 2 conteneurs docker avec docker-compose. J'utilise Docker sur Mac, pas de 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

Tout fonctionne bien. J'installe Drupal avec succès. 

Le problème est le suivant: je voudrais connecter SequelPro à ma base de données, mais je n’obtiens pas de connexion au conteneur mysql. Je suis débutant dans le docker. Merci pour votre aide Micha

12
freemindghost

Vous avez oublié d’exposer votre port de base de données à l’hôte, il vous suffit donc d’ajouter

mysql-server:
    image: mysql
    ports: 
      - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: drupal
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal

Puis connectez-vous à la base de données dans Sequel en utilisant:

user: root
password: root
Host: localhost
port: 3306

Si vous avez déjà une base de données MySQL locale sur votre compte, changez le port

ports: 
  - "4306:3306"

puis connectez-vous au port 4306 au lieu de 3306. Attention, depuis le conteneur drupal, vous utiliserez toujours 3306

23
Eugen Mayer

Mappez le port d'hôte 4306 (ou tout autre port disponible) sur le docker mysql 3306, comme:

mysql-server:
        image: mysql
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal
    ports:
      - "4306:3306"

Vous devriez pouvoir vous connecter à docker mysql avec 127.0.0.1:4306

mysql -u drupal -h 127.0.0.1 -P 4306 -p
5
Khaldoon Masud

Dans mon cas, j'ai un problème avec mysql: 8, changez pour n'importe quel 5 et tout va bien

Devrait ressembler un peu plus à ceci:

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

(Je ne sais pas si la définition des variables d'environnement au niveau global fonctionne, peut-être que quelqu'un qui sait peut corriger ma réponse ici et la simplifier)

Comme vous pouvez le voir, vous avez 2 services, mysql-server et drupal-web . Drupal-web relie votre service de base de données. Les deux services ont leurs propres variables d'environnement.

0
chickahoona