【docker】 MYSQLを柔軟にカスタムできるテンプレート
他テンプレート
背景
- 2年ほど前からdockerでサービスを動かしてきて、作りたいと思ってた
- dockerの設定が記事によってまちまち
- バージョン指定やinitするときにsqlを走らせたい
- my.cnfなどカスタムしたい
- dataVolumeを指定したい
- それぞれググるのが面倒
使いどころ
- ローカルのお試し開発環境で試すもよし
- カスタムしたいところだけコメントアウトを外せばいい
試してみる
下にあるDockerfileとかの内容をコピる or https://github.com/vvdocker/solo-mysqlにアクセスする or cloneする
git clone https://github.com/vvdocker/solo-mysql
Dockerfileで必要なところをコメントインとかする
# Dockerfile
##########################
# base sql version
##########################
FROM mysql:5.7
#FROM mysql:5.6
#FROM mysql:latest
##########################
# ENV
##########################
ENV MYSQL_ROOT_USER root
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE sample_db
ENV MYSQL_USER test
ENV MYSQL_PASSWORD password
##########################
# my.cnf
##########################
#COPY conf.d/my.cnf /etc/mysql/conf.d/
##########################
# start up shell command
##########################
VOLUME ./init.d:/docker-entrypoint-initdb.d
my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
startup.sh
#! /bin/bash
CREATE_USER='mysql'
CREATE_PASSWORD='secret'
GRANT="GRANT ALL ON ${MYSQL_DATABASE}.* TO ${CREATE_USER}@'%' IDENTIFIED BY ${CREATE_PASSWORD}; FLUSH PRIVILEGES"
echo $GRANT | mysql -u ${MYSQL_ROOT_USER} -p${MYSQL_ROOT_PASSWORD}
startup.sql
DROP TABLE IF EXISTS `personal`;
CREATE TABLE `personal` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `personal` WRITE;
/*!40000 ALTER TABLE `personal` DISABLE KEYS */;
INSERT INTO `personal` (`id`, `name`)
SELECT * FROM (SELECT 1, 'root@local') AS tmp
WHERE NOT EXISTS (
SELECT `id` FROM `personal` WHERE `id` = 1
) LIMIT 1;
これらのサンプルをもとに好きに書き換える
docker build -t vvdocker-mysql .
でイメージを作ってdocker run --name app-db -d vvdocker-mysql
で起動するdocker run --name app-db --volumes-from strage_container -d vvdocker-mysql
のようにbusyboxなども対応
その他追加事項
- railsやredis compose周りのテンプレートも追加予定
- 追加予定まわりはこちらを参考にhttps://github.com/vvdocker?tab=repositories