I build 2 docker container with docker-compose. I use Docker on Mac, no 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
Everything works fine. I install Drupal successfully.
The problem is: I would like to connect SequelPro to my DB, but i dont get a connection to the mysql container.
I'm a docker beginner.
You forgot to expose your DB port to the host, so simply add
mysql-server:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
And then connect to the database in Sequel Pro using:
user: root
password: root
host: localhost
port: 3306
If you already have a local mysql database running on your host, change the port
ports:
- "4306:3306"
and then connect to port 4306
instead of 3306
. Be aware, from the Drupal container, you will still use 3306
Map host port 4306 (or any other available port) to docker mysql 3306 like:
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
ports:
- "4306:3306"
You should be able to connect to docker mysql with 127.0.0.1:4306
mysql -u drupal -h 127.0.0.1 -P 4306 -p
In my case i has problem with mysql:8, change to any 5 and all is ok
Should look a bit more like this:
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
(Im not sure if defining the environment variables on a global level work, maybe someone who knows can correct my answer here and simplify it)
As you can see, you have 2 services, mysql-server and drupal-web.
Drupal-web links your database service. Both services have their own environment variables.