1、准备mysql下载地址及文件格式
2、编写my.cnf文件
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
password = ******
user = root
[mysqld]
bind-address = 0.0.0.0
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
default_storage_engine = InnoDB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
symbolic-links=0
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
[mysql]
default-character-set=utf8
3、编写daockerFile文件
#引入基础镜像
FROM centos:7
#添加mysql安装包 ADD后 自动解压
ADD mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz /usr/local
#修改文件夹名称
RUN mv /usr/local/mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
#添加配置文件
ADD my.cnf /etc/my.cnf
#下载jdk安装包
RUN yum install java-1.8.0-openjdk.x86_64 -y
#配置jdk
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
#下载mysql的依赖包安装包
RUN yum install -y libaio
RUN yum -y install numactl
RUN yum install initscripts -y
4、执行命令 并上传文件
打包
docker build -t mysql_jdk_centos:1.0 .
上传
docker push mysql_jdk_centos:1.0 .
5、编写启动文件
#!/bin/bash
#设置用户组
groupadd mysql
useradd mysql -g mysql
#创建数据目录
mkdir -p /usr/local/mysql/data
#赋值权限
chown mysql:mysql -R /usr/local/mysql/data
#进入mysql文件执行文件下
cd /usr/local/mysql/bin
#运行初始化信息
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
#复制服务启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#启动服务器
service mysql start
#设置环境变量
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
#测试mysql 环境变量
mysql --version
# 搜索日志文件中的初始化密码行,并提取密码
init_password_line=$(grep 'A temporary password is generated for root@localhost' /usr/local/mysql/data/mysql.log)
init_password=$(echo "$init_password_line" | awk '{print $NF}')
# 使用提取的密码连接到 MySQL,并执行SQL语句 /设置默认密码 并 设置远程连接
mysql --connect-expired-password -u root -p"$init_password" 2>/dev/null <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '*******';
grant all privileges on *.* to root@'%' identified by '********';
flush privileges;
quit
EOF
# 使用MySQL命令检查数据库是否存在
DB_EXISTS=$(./mysql -u -e "SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'store_server';")
echo "if database exists $DB_EXISTS"
if [[ "$DB_EXISTS" -eq 1 ]]; then
echo "Database 'store_server' exists."
else
echo "Database 'store_server' does not exist. Creating it now..."
# 这里可以添加创建数据库的命令,如果不存在的话
# mysql $MYSQL_CONN -e "CREATE DATABASE IF NOT EXISTS store_server;"
# 但在这个例子中,我们假设只是想在存在时执行SQL脚本
if ! ./mysql -u root < /usr/local/mysql/init/store_server.sql ; then
echo "Error occurred while executing the SQL script."
exit 1
fi
fi
#启动项目
cd /home
#赋值权限
chmod +x /home/glsa-store-mqtt-10.0.0.jar
#运行java程序
nohup java -jar -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/log/admindump -Duser.timezone=GMT+08 /home/****.jar
6、配置引入jar的docker文件
#引入打的基础包
FROM mysql_jdk_centos:1.0
#添加运行的jar包 ADD后 自动解压
ADD glsa-****.jar /home/***.jar
#设置执行脚本
COPY intiMysql.sh /intiMysql.sh
#设置权限
RUN chmod +x /intiMysql.sh
#运行脚本
ENTRYPOINT ["/intiMysql.sh"]