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
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
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
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.