Skip to content

Instantly share code, notes, and snippets.

@Andor
Created October 7, 2019 16:01
Show Gist options
  • Save Andor/1bc704e7a382ccf2ce5b8e8b55c45ebb to your computer and use it in GitHub Desktop.
Save Andor/1bc704e7a382ccf2ce5b8e8b55c45ebb to your computer and use it in GitHub Desktop.
Ansible Mysql Docker
- name: run mysql with docker container and wait for healthcheck pass
docker_container:
name: my-mysql
hostname: my-mysql
image: mysql/mysql-server # this image has healthchecks
env: "{{ mysql_docker_env }}"
volumes:
- "{{ mysql_data_directory }}/data:/var/lib/mysql"
- "{{ mysql_data_directory }}/logs:/var/log/mysqld"
- /var/run/mysqld:/var/run/mysqld # we will have ability to connect to mysql from host machine
- /usr/share/zoneinfo:/usr/share/zoneinfo # up-to-date timezones from host machine
restart_policy: always
command: "{{ mysql_docker_command }}"
register: mysql_docker_status
until: mysql_docker_status.ansible_facts.docker_container.State.Health.Status == "healthy"
retries: 20
delay: 3
vars:
mysql_docker_command: |
bash
-e
-c
"chown mysql /var/run/mysqld /var/log/mysqld; . /entrypoint.sh"
mysqld
--character-set-server=utf8
--collation-server=utf8_general_ci
--character-set-filesystem=utf8
--skip-name-resolve
--socket=/var/run/mysqld/mysqld.sock
--slow-query-log
--slow-query-log-file=/var/log/mysqld/mysqld-slow.log
--log-error=/var/log/mysqld/mysqld.log
--min-examined-row-limit=2
--log-queries-not-using-indexes
--default-authentication-plugin=mysql_native_password
mysql_docker_env:
TZ: "Europe/Helsinki"
MYSQL_DATABASE: "{{ mysql_database }}"
MYSQL_USER: "{{ mysql_user }}"
MYSQL_PASSWORD: "{{ mysql_password }}"
mysql_data_directory: /mnt/mysql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment