0
点赞
收藏
分享

微信扫一扫

多区域ISIS路由计算

何晓杰Dev 03-26 09:00 阅读 3

前置条件

1、拉取mysql镜像:

docker pull mysql

2、查看mysql镜像历史docker history或者在docker hub查看
在这里插入图片描述
在这里插入图片描述
发现mysql启动并赋权执行命令如下:

docker-entrypoint.sh mysqld

命令一直占用终端,无法执行下一步命令

解决思路

1、调整启动命令,让mysqld在后台运行
2、判断root的执行sql权限是否正常,如果正常导入数据库
3、增加健康检查
基于上述,编写的start.sh脚本内容如下:

#!/bin/bash
str=$"\n"
nohup docker-entrypoint.sh mysqld &
sstrn=$(echo -e $str)
echo $sstrn
for i in {1..100}; do
 if mysql -uroot -proot -e 'select 1';then
     echo 'create database monitor ...';
     mysql -uroot -proot -e 'create database weltest;';
     echo 'start import database weltest...';
     mysql -uroot -proot weltest<weltest.sql; 
     echo 'import database weltest success!';
     break; 
 fi; 
 echo 'loop '$i 'sleep 3 s';
 sleep 3;
done

重新构建镜像

执行构建命令,Dockerfile文件内容如下:

FROM mysql:latest
ADD start.sh /

执行构建命令:

docker build -t weltest_mysql:1.0.0 .

编写docker-compose

docker-compose版本为:v2.25.0,对应内容如下:

version: '3.9'
services:
 mss_mysql:
  image: weltest_mysql:1.0.0
  ports: 
   - "3306:3306"
  volumes:
    - "/mysql/weltest.sql:/weltest.sql"
  command:
  - /bin/sh 
  - -c 
  - | 
    bash start.sh 
    /bin/sh
  healthcheck:
    test: mysql -uroot -proot weltest-e 'select 1'
    interval: 30s
    timeout: 10s
    retries: 5
  tty: true
  stdin_open: true
举报

相关推荐

0 条评论