Thank you for reading this post, don't forget to subscribe!
Создадим несколько файлов:
Dockerfile
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
FROM centos:centos7 MAINTAINER sidmid.ru # Configure my repo to use my custom Nginx with modsec RUN mkdir -p /usr/local/src && \ cd /usr/local/src && \ rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm && \ yum -y install git mysql-community-server && \ git clone https://github.com/SebastianUA/mysql-sys.git /tmp/mysql-sys ADD mysql-init /usr/bin/mysql-init RUN chmod +x /usr/bin/mysql-init && \ /usr/bin/mysql-init ADD mysql-start /usr/bin/mysql-start RUN chmod +x /usr/bin/mysql-start ADD my.cnf /etc/my.cnf # expose mysql EXPOSE 20 3306 # Run mysql in Docker conainer ENTRYPOINT ["/usr/bin/mysql-start"] |
[/codesyntax]
my.cnf
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[mysql] user = root password = mysql socket = /var/lib/mysql/mysql.sock [mysqld] user = mysql datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock skip-name-resolve symbolic-links = 0 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES max_connections = 32 open_files_limit = 128 table_open_cache = 128 table_definition_cache = 128 innodb_buffer_pool_size = 32M innodb_log_file_size = 16M log_bin log_slave_updates gtid_mode = ON enforce_gtid_consistency sync_binlog = 1 [mysqld_safe] log-error = /var/log/mysqld.log pid-file = /var/run/mysqld/mysqld.pid |
[/codesyntax]
mysql-init
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/sh /usr/bin/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf & sleep 3 mysql -u root -e " \ SET PASSWORD = PASSWORD('mysql'); \ UPDATE mysql.user SET password = PASSWORD('mysql') WHERE user = 'root'; \ DELETE FROM mysql.user WHERE user = ''; \ GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION; \ GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl'; \ GRANT ALL ON *.* TO 'fabric'@'%' IDENTIFIED BY 'fabric'; \ GRANT SELECT, SHOW DATABASES, SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mem'@'%' IDENTIFIED BY 'mem'" cd /tmp/mysql-sys mysql -u root -pmysql < sys_56.sql cd ~ rm -rf /tmp/mysql-sys /usr/bin/mysqladmin -u root -pmysql shutdown |
[/codesyntax]
mysql-start
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 |
#!/bin/sh /usr/sbin/sshd mysqld_safe --defaults-file=/etc/my.cnf |
[/codesyntax]
Сборка контейнера.
Когда все необходимое прописать в файл Dockerfile, можно приступить к сборке контейнера:
captain- пользователь (чтобы понимать кто создал контейнер).
mysql- говорит нам что в ОС есть mysql (чтобы не забыть).
centos7 – ОС.
После данной команды, начнется скачивание образа на CentOS и установки в него mysql. После завершения Вы должны увидеть ваш новый докер в имеющихся образах:
Но есть одно но, необходимо переопределять (желательно):
/var/log/mysql/ -это логи самого mysql.
/var/lib/mysql/ -папка для mysql
То есть, должно запускаться следующим образом:
docker run -d -p 3307:3306 -v/var/log/mysql:/var/log/mysql/ captain/mysql:centos7
Установка mysql в контейнере на Docker завершена.