Example MySQL Configuration

Updated 2 years ago by Admin

This guide covers configuring continuous integration pipelines for projects that have a MySQL dependency. If you’re new to Drone please read our Tutorial and build configuration guides first.


Basic Example

In the below example we demonstrate a pipeline that launches a MySQL service container. The database server will be available at database:3306, where the hostname matches the service container name.

1   kind: pipeline
2 name: default
3
4 steps:
5 - name: test
6 image: mysql
7 commands:
8 - sleep 15
9 - mysql -u root -h database --execute="SELECT VERSION();"
10
11 services:
12 - name: database
13 image: mysql
14 environment:
15 MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
16 MYSQL_DATABASE: test


Database Options

If you need to start the mysql container with additional runtime options you can override the entrypoint and command arguments.

11  services:
12 - name: database
13 image: mysql
14 entrypoint: [ "mysqld" ]
15 command: [ "--character-set-server=utf8mb4" ]


Database Settings

The official MySQL image provides environment variables used at startup to create the default username, password, database and more. Please see the official image documentation for more details.

11  services:
12 - name: database
13 image: mysql
14 environment:
15 MYSQL_DATABASE: test
16 MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'


Common Problems

Initialization

If you are unable to connect to the MySQL container please make sure you are giving MySQL adequate time to initialize and begin accepting connections.

1   kind: pipeline
2 name: default
3
4 steps:
5 - name: test
6 image: mysql
7 commands:
8 - sleep 15
9 - mysql -u root -h database
Incorrect Hostname

You cannot use 127.0.0.1 or localhost to connect with the Mysql container. If you are unable to connect to Mysql please verify you are using the correct hostname, corresponding with the name of the mysql service container.

Bad:

steps:
- name: test
image: mysql
commands:
- sleep 15
- mysql -u root -h localhost

Good:

steps:
- name: test
image: mysql
commands:
- sleep 15
- mysql -u root -h database

services:
- name: database
image: mysql


How did we do?