Dockerfile企业案例三

使用Docker在CentOS上创建MariaDB服务

[root@bogon mysql]# tree
.
├── Dockerfile
├── mariadb.repo
├── mariadb.sh
├── mariadb.sql
└── server.cnf

mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=0

server.cnf 用于确保我们不被MariaDB阻止:

[mysqld]
bind-address=0.0.0.0
console=1
general_log=1
general_log_file=/dev/stdout
log_error=/dev/stderr
collation-server=utf8_unicode_ci
character-set-server=utf8

mariadb.sql 用于修改mariadb的root密码,密码为admin#123

USE mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
UPDATE user SET password=PASSWORD("admin#123") WHERE user='root';
FLUSH PRIVILEGES;

mariadb.sh 用于应用所有更新并为我们启动MariaDB服务:

#!/bin/sh
chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user mysql > /dev/null

mysqld_safe --user mysql &

sleep 5
mysql -v < /root/mariadb.sql
sleep 5
ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9
mysqld_safe --user mysql

Dockerfile文件详细配置

FROM centos:latest
MAINTAINER David Xie "david.scriptfan@gmail.com"
ADD mariadb.repo /etc/yum.repos.d/mariadb.repo
ADD mariadb.sql /root/mariadb.sql
ADD server.cnf /etc/my.cnf.d/server.cnf
ADD mariadb.sh /root/mariadb.sh

RUN yum install -y hostname MariaDB-server
RUN yum clean all
RUN chmod +x /root/mariadb.sh

EXPOSE 3306

CMD ["/root/mariadb.sh"]

创建容器。

docker build --rm=true --no-cache=true -t mariadb .
docker run -d -p 3306:3306 mariadb

验证测试结果

[root@bogon mysql]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS
NAMES12de58a53491        mariadb             "/root/mariadb.sh"       6 minutes ago       Up 6 minutes        80/tcp, 0.0.0.0:3306->3306/tcp

参考文献:

http://iamdavidxie.com/2014/07/21/create-a-mariadb-service-on-centos-with-docker/