dockerFile 基于centos:7将mysql、jdk打包成镜像,并引入jar包执行运行脚本

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"]

7、上传并运行即可

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值