MariaDB-Drupal#
The Lagoon mariadb-drupal Docker image Dockerfile is a customized mariadb image to use within Drupal projects in Lagoon. It differs from the mariadb image only for initial database setup, made by some environment variables:
| Environment Variable | Default | Description |
|---|---|---|
MARIADB_DATABASE |
drupal | Drupal database created at startup. |
MARIADB_USER |
drupal | Default user created at startup. |
MARIADB_PASSWORD |
drupal | Password of default user created at startup. |
If the LAGOON_ENVIRONMENT_TYPE variable is set to production, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024 and MARIADB_INNODB_LOG_FILE_SIZE=256.
Additional MariaDB Logging#
During the course of development, it may be necessary to enable either query logging or slow query logging. To do so, set the environment variables MARIADB_LOG_SLOW or MARIADB_LOG_QUERIES. This can be done in docker-compose.yml.
Connecting to MySQL container from the host#
If you would like to connect to your MySQL database inside the Docker container with an external tool like Sequel Pro, MySQL Workbench, HeidiSQL, DBeaver, plain old mysql-cli or anything else, here's how to get the IP and port info.
Get published MySQL port from the container#
By default, Docker assigns a randomly published port for MySQL during each container start. This is done to prevent port collisions.
To get the published port via docker:
Run: docker port [container_name].
Or via docker-compose inside a Drupal repository:
Run: docker compose port [service_name] [interal_port].
Setting a static port (not recommended)#
During development, if you are using an external database tool, it may become cumbersome to continually check and set the MySQL connection port.
To set a static port, edit your service definition in your docker-compose.yml.
mariadb:
...
ports:
- "33772:3306" # Exposes port 3306 with a 33772 on the host port. Note by doing this you are responsible for managing port collisions`.
Warning
By setting a static port you become responsible for managing port collisions.
Connect to MySQL#
Now you can use these details to connect to whatever database management tool you'd like.
| Linux | OS X | |
|---|---|---|
| IP/Host | IP from container | docker.amazee.io |
| Port | Published port from container | Published port from container |
| Username | drupal |
drupal |
| Password | drupal |
drupal |
| Database | drupal |
drupal |