I build 2 docker container with docker-compose. I use Docker on Mac, no boot2docker.
version: \'2\'
services:
drupal-web:
image: drupal:
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
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.
version: "3.8"
services:
db-1:
container_name: db-1
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'db'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'user'
# You can use whatever password you like
MYSQL_PASSWORD: 'password'
# Password for root access
MYSQL_ROOT_PASSWORD: 'password'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3306:3306'
expose:
# Opens port 3306 on the container
- '3306'
# Where our data will be persisted
volumes:
- my-db:/var/lib/mysql
volumes:
my-db:
This works just fine today. However it didn't work when I used image: mysql:latest
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
In my case i has problem with mysql:8, change to any 5 and all is ok