mysql的dockerfile_Dockerfile构建MySQL
利用Dockerfile自定義構建MySQL服務折騰了幾天,一直在啟動服務上出現錯誤,現在終于解決了該問題,這里進行記錄一下
此次Dockerfile文件中以centos:latest為基礎鏡像,在此基礎上進行安裝MySQL服務(這里以mariadb為例)
構建的原理:
1、利用Dockerfile進行安裝MySQL服務(yum安裝或者以rpm包安裝(由于網絡問題可將需要安裝的包下載到本地進行安裝))
2、編寫shell腳本,將安裝好的mariadb進行重新初始化,并啟動mariadb,執行需要的sql腳本,關閉mariadb,最后通過前臺開啟服務
3、由于MySQL5.6和MySQL5.7的初始化方式不一樣,本文介紹的適用于MySQL5.6(后面會有5.7的案例)
查看整個構建目錄:
[root@docker mysql]# tree
.
├── business.sql
├── Dockerfile
├── MariaDB-10.0.33-centos7-x86_64-client.rpm
├── MariaDB-10.0.33-centos7-x86_64-common.rpm
├── MariaDB-10.0.33-centos7-x86_64-compat.rpm
├── MariaDB-10.0.33-centos7-x86_64-server.rpm
├── mariadb.repo
├── server.cnf
├── setup.sh└── setup.sh.bak
目錄中有下載好的mariadb安裝的包,當然如果你網絡好,只需要配置repo就行,然后將Dockerfile中的安裝rpm的過程換成替換repo就ok
下面介紹Dockerfile文件,并介紹構建過程執行了什么:
[root@docker mysql]# catDockerfile
FROM centos
MAINTAINER json_hc@163.com
COPY MariaDB-10.0.33-centos7-x86_64-client.rpm /root/MariaDB-10.0.33-centos7-x86_64-client.rpm
COPY MariaDB-10.0.33-centos7-x86_64-common.rpm /root/MariaDB-10.0.33-centos7-x86_64-common.rpm
COPY MariaDB-10.0.33-centos7-x86_64-compat.rpm /root/MariaDB-10.0.33-centos7-x86_64-compat.rpm
COPY MariaDB-10.0.33-centos7-x86_64-server.rpm /root/MariaDB-10.0.33-centos7-x86_64-server.rpm
WORKDIR/root
RUNyum remove mysql-libs -y
RUNyum -y install *.rpm
ADD business.sql/root/business.sql
ADD server.cnf/etc/my.cnf.d/server.cnf
ADD setup.sh /root/setup.shRUNyumclean all
RUNchmod +x /root/setup.shEXPOSE3306CMD ["/root/setup.sh"]
1、構建使用的基礎鏡像為centos:latest
2、將下載好的rpm包copy到鏡像中,然后進行安裝
3、將需要執行的sql、配置文件,最后執行的shell腳本也copy到鏡像中
在執行setup.sh腳本之前mariadb服務已經安裝完畢,基本的數據目錄還是/var/lib/mysql
將配置文件拷貝到了鏡像中,查看配置文件:
[root@docker mysql]# catserver.cnf
[mysqld]
bind-address=0.0.0.0console=1general_log=1general_log_file=/dev/stdout
#log_error=/dev/stderr
collation-server=utf8_unicode_ci
character-set-server=utf8
里面的內容可以進行修改或者添加更多
查看setup.sh的內容:
[root@docker mysql]# cat setup.sh#!/bin/sh
chown -R mysql:mysql /var/lib/mysql
mysql_install_db--user=mysql > /dev/nullmysqld_safe--user=mysql &
sleep 5mysql< /root/business.sqlsleep 5
ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9mysqld_safe--user=mysql
由于需要重新將安裝好的mariadb服務進行初始化,所以避免出錯可以將數據目錄進行權限授予
MySQL5.6的初始化為mysql_install_db加上一些參數
初始化數據庫后,后臺開啟mariadb服務,然后將sql進行執行:
[root@docker mysql]# catbusiness.sql
create database wordpress DEFAULT CHARACTER SET utf8;
USE mysql;
GRANT ALL PRIVILEGES ON*.* TO 'root'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;
UPDATE user SET password=PASSWORD("root") WHERE user='root';
FLUSH PRIVILEGES;
sql內容就是創建的庫和設置root賬號的密碼
sql執行完成后setup.sh腳本后面就是將mariadb進程殺掉,最后由前臺運行mariadb服務,如果在啟動容器中遇見了錯誤,請利用docker logs container_name/container_id
進行查看,根據錯誤提示進行解決
總結
以上是生活随笔為你收集整理的mysql的dockerfile_Dockerfile构建MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql设置定时入伍_mysql 集群
- 下一篇: mysql 并发避免锁表_MYSQL锁表