dockerfile构建mysql_Dockerfile在linux上构建mysql8镜像并创建数据库-Go语言中文社区
由于mysql5和mysql8版本的不同,導致構建鏡像的時候存在一定的差異,在此將mysql8鏡像的構建做一個總結。
本次總共用到了四個文件,分別是Dockerfile,setup.sh,my.sql,run.sh。
1.Dockerfile
Dockerfile是構建鏡像必須的文件,需要注意的是第二次copy時必須放到"/docker-entrypoint-initdb.d"路徑下,在這個路徑下會自動執行相關腳本。具體內容如下:
FROM mysql:8
RUN mkdir -p /mysql
COPY my.sql /mysql
COPY setup.sh /docker-entrypoint-initdb.d
RUN chmod a+x /docker-entrypoint-initdb.d/setup.sh
2.setup.sh
這里就是去執行sql語句的。如下:
#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <
source /mysql/my.sql;
3.my.sql
這里需要注意的是如果你的sql語句是從導出來的,那么需要在sql文件開頭加兩句話,因為導出來的sql語句是不包含創建數據源信息的,否則就會導致直接執行的時候出錯。
CREATE DATABASE IF NOT EXISTS `my`;
USE `my`;
以下文件可以忽略,按照自己的sql語句添加即可,總的sql內容信息如下:
/*
Navicat MySQL Data Transfer
Source Server : 127.0.0.1_8899
Source Server Type : MySQL
Source Server Version : 80018
Source Host : 127.0.0.1:8899
Source Schema : my
Target Server Type : MySQL
Target Server Version : 80018
File Encoding : 65001
Date: 25/12/2019 13:50:49
*/
CREATE DATABASE IF NOT EXISTS `my`;
USE `my`;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for token
-- ----------------------------
DROP TABLE IF EXISTS `token`;
CREATE TABLE `token` (
`Token` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`TimeOutDate` datetime(0) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
4.run.sh
這個腳本文件是可以不用的,只是圖個方便,自動執行docker的命令。
#!/bin/bash
echo "start build image ..."
docker build -t test .
echo "build success .."
sleep 3
echo "start run image ..."
docker run -e MYSQL_ROOT_PASSWORD=123456 -p 8899:3306 -d test
echo " success .."
最后在命令行運行:
sh run.sh
總結
以上是生活随笔為你收集整理的dockerfile构建mysql_Dockerfile在linux上构建mysql8镜像并创建数据库-Go语言中文社区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php操作mysql的封装类_PHP封装
- 下一篇: mysql 交叉统计_统计知识——交叉分