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/