亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解利用Dockerfile構(gòu)建mysql鏡像并實(shí)現(xiàn)數(shù)據(jù)的初始化及權(quán)限設(shè)置

 更新時(shí)間:2017年06月05日 14:32:34   作者:13的技術(shù)分享  
本篇文章主要介紹了詳解利用Dockerfile構(gòu)建mysql鏡像并實(shí)現(xiàn)數(shù)據(jù)的初始化及權(quán)限設(shè)置 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文提要

本文目的不僅僅是創(chuàng)建一個(gè)MySQL的鏡像,而是在其基礎(chǔ)上再實(shí)現(xiàn)啟動(dòng)過(guò)程中自動(dòng)導(dǎo)入數(shù)據(jù)及數(shù)據(jù)庫(kù)用戶的權(quán)限設(shè)置,并且在新創(chuàng)建出來(lái)的容器里自動(dòng)啟動(dòng)MySQL服務(wù)接受外部連接,主要是通過(guò)Dockerfile和shell腳本實(shí)現(xiàn)這一過(guò)程。

搭建步驟

1、首先創(chuàng)建Dckerfile:

FROM mysql:5.7

#設(shè)置免密登錄
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes

#將所需文件放到容器中
COPY setup.sh /mysql/setup.sh
COPY schema.sql /mysql/schema.sql
COPY privileges.sql /mysql/privileges.sql

#設(shè)置容器啟動(dòng)時(shí)執(zhí)行的命令
CMD ["sh", "/mysql/setup.sh"]

2、編寫容器啟動(dòng)腳本setup.sh:

#!/bin/bash
set -e

#查看mysql服務(wù)的狀態(tài),方便調(diào)試,這條語(yǔ)句可以刪除
echo `service mysql status`

echo '1.啟動(dòng)mysql....'
#啟動(dòng)mysql
service mysql start
sleep 3
echo `service mysql status`

echo '2.開始導(dǎo)入數(shù)據(jù)....'
#導(dǎo)入數(shù)據(jù)
mysql < /mysql/schema.sql
echo '3.導(dǎo)入數(shù)據(jù)完畢....'

sleep 3
echo `service mysql status`

#重新設(shè)置mysql密碼
echo '4.開始修改密碼....'
mysql < /mysql/privileges.sql
echo '5.修改密碼完畢....'

#sleep 3
echo `service mysql status`
echo `mysql容器啟動(dòng)完畢,且數(shù)據(jù)導(dǎo)入成功`

tail -f /dev/null

這里是先導(dǎo)入數(shù)據(jù),然后才是設(shè)置用戶和權(quán)限,是因?yàn)閙ysql容器一開始為免密登錄,Dockerfile中有如下設(shè)置:ENV MYSQL_ALLOW_EMPTY_PASSWORD yes,此時(shí)執(zhí)行導(dǎo)入數(shù)據(jù)命令不需要登錄驗(yàn)證操作,如果是先執(zhí)行權(quán)限操作,那么導(dǎo)入數(shù)據(jù)則需要登錄驗(yàn)證,整個(gè)過(guò)程就麻煩了許多。

3、需要導(dǎo)入數(shù)據(jù)的mysql腳本命令schema.sql:

-- 創(chuàng)建數(shù)據(jù)庫(kù)
create database `docker_mysql` default character set utf8 collate utf8_general_ci;

use docker_mysql;

-- 建表
DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
 `id` bigint(20) NOT NULL,
 `created_at` bigint(40) DEFAULT NULL,
 `last_modified` bigint(40) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 `first_name` varchar(255) DEFAULT NULL,
 `last_name` varchar(255) DEFAULT NULL,
 `username` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 插入數(shù)據(jù)
INSERT INTO `user` (`id`, `created_at`, `last_modified`, `email`, `first_name`, `last_name`, `username`)
VALUES
  (0,1490257904,1490257904,'john.doe@example.com','John','Doe','user');

因?yàn)槭菧y(cè)試,所以隨便寫了一個(gè)建表語(yǔ)句,如果是真實(shí)項(xiàng)目肯定不止這一張表,直接將建表語(yǔ)句覆蓋過(guò)來(lái)就好。

4、mysql權(quán)限設(shè)置命令privileges.sql:

use mysql;
select host, user from user;
-- 因?yàn)閙ysql版本是5.7,因此新建用戶為如下命令:
create user docker identified by '123456';
-- 將docker_mysql數(shù)據(jù)庫(kù)的權(quán)限授權(quán)給創(chuàng)建的docker用戶,密碼為123456:
grant all on docker_mysql.* to docker@'%' identified by '123456' with grant option;
-- 這一條命令一定要有:
flush privileges;

5、創(chuàng)建鏡像

docker build -t 13/docker-mysql .

docker build 為創(chuàng)建鏡像命令,名稱為13/docker-mysql,'.'表示當(dāng)前目錄,即Dockerfile文件所在的目錄,創(chuàng)建過(guò)程如下:

執(zhí)行docker images查看該鏡像是否存在于鏡像列表中:

創(chuàng)建成功。

6、啟動(dòng)容器

docker run -d -p 13306:3306 13/docker-mysql

啟動(dòng)容器,并將端口映射到本地的13306端口,命令行如圖所示:

容器啟動(dòng)成功。

查看容器的日志記錄,啟動(dòng)過(guò)程與啟動(dòng)腳本setup.sh中所規(guī)范的步驟一致,數(shù)據(jù)導(dǎo)入和權(quán)限設(shè)置成功:

驗(yàn)證結(jié)果

1、通過(guò)進(jìn)入容器在命令行驗(yàn)證

啟動(dòng)時(shí)容器的id為9db491b1d760,因此執(zhí)行exec命令進(jìn)入容器:

docker exec -it 9db491b1d760 /bin/bash

這個(gè)命令不要直接使用,因?yàn)樵谀銠C(jī)器上id可能不同,替換掉id值即可。

前文中創(chuàng)建了docker_mysql數(shù)據(jù)庫(kù),并在此數(shù)據(jù)庫(kù)中創(chuàng)建了user表,同時(shí)將數(shù)據(jù)庫(kù)的連接授權(quán)賦予了新建的docker用戶,因此驗(yàn)證過(guò)程為:

  1. 使用docker用戶登錄數(shù)據(jù)庫(kù):mysql -u docker -p
  2. 輸入密碼123456通過(guò)登錄驗(yàn)證
  3. 切換至docker_mysql數(shù)據(jù)庫(kù):use docker_mysql;
  4. 查看數(shù)據(jù)庫(kù)中的表:show tables;
  5. 查看表中的數(shù)據(jù):select * from user;

整個(gè)過(guò)程如下:

通過(guò)圖中的結(jié)果對(duì)比,與前文一致,驗(yàn)證成功。

2、通過(guò)mysql客戶端管理軟件驗(yàn)證

通過(guò)圖中的結(jié)果對(duì)比,與前文一致,驗(yàn)證成功。

結(jié)語(yǔ)

本篇文章是單獨(dú)介紹了一下創(chuàng)建mysql鏡像的步驟,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Docker作為PaaS的替代方案是否完美無(wú)缺

    用Docker作為PaaS的替代方案是否完美無(wú)缺

    Docker的出現(xiàn)似乎又帶來(lái)了一種新的選擇,而且對(duì)于開發(fā)者來(lái)說(shuō)更加靈活、便捷、易用。既然用戶可以直接在Docker上運(yùn)行,PaaS是否還有應(yīng)用場(chǎng)景?面對(duì)企業(yè)繁雜的應(yīng)用環(huán)境,用Docker作為PaaS的替代方案是否完美無(wú)缺
    2016-11-11
  • Docker中的COPY指令和ADD指令詳解

    Docker中的COPY指令和ADD指令詳解

    COPY?和?ADD?都是?Dockerfile?中的指令,有著類似的作用。它們?cè)试S我們將文件從特定位置復(fù)制到?Docker?鏡像中,這篇文章主要介紹了Docker中的COPY指令和ADD指令,需要的朋友可以參考下
    2022-06-06
  • Docker容器開啟設(shè)置自動(dòng)啟動(dòng)的實(shí)現(xiàn)方法

    Docker容器開啟設(shè)置自動(dòng)啟動(dòng)的實(shí)現(xiàn)方法

    通過(guò)在Docker中設(shè)置容器的默認(rèn)啟動(dòng)命令,我們可以實(shí)現(xiàn)在容器啟動(dòng)時(shí)自動(dòng)啟動(dòng)服務(wù)的功能,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Docker安裝mysql并解決中文亂碼問(wèn)題

    Docker安裝mysql并解決中文亂碼問(wèn)題

    本文主要介紹了Docker安裝mysql并解決中文亂碼問(wèn)題本人親自測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Dockerfile命令參數(shù)的具體使用

    Dockerfile命令參數(shù)的具體使用

    Dockerfile是一個(gè)文本文件,包含用戶構(gòu)建鏡像的所需要的全部命令,本文主要介紹了Dockerfile命令參數(shù)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Docker?創(chuàng)建centos容器集群并實(shí)現(xiàn)遠(yuǎn)程登錄功能

    Docker?創(chuàng)建centos容器集群并實(shí)現(xiàn)遠(yuǎn)程登錄功能

    這篇文章主要介紹了Docker?創(chuàng)建centos容器集群并實(shí)現(xiàn)遠(yuǎn)程登錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 如何解決IDEA無(wú)法連接docker中的數(shù)據(jù)庫(kù)的問(wèn)題

    如何解決IDEA無(wú)法連接docker中的數(shù)據(jù)庫(kù)的問(wèn)題

    這篇文章主要介紹了如何解決IDEA無(wú)法連接docker中的數(shù)據(jù)庫(kù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Docker安裝Jenkins-2.249.3-1.1的詳細(xì)過(guò)程

    Docker安裝Jenkins-2.249.3-1.1的詳細(xì)過(guò)程

    這篇文章主要介紹了Docker安裝Jenkins-2.249.3-1.1,通過(guò)編寫docke安裝腳本來(lái)實(shí)現(xiàn)安裝目的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • docker目錄掛載的新語(yǔ)法小結(jié)

    docker目錄掛載的新語(yǔ)法小結(jié)

    本文主要介紹了docker目錄掛載的新語(yǔ)法小結(jié),詳細(xì)的介紹了兩種掛載目錄的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • 講解使用Docker搭建Java Web運(yùn)行環(huán)境

    講解使用Docker搭建Java Web運(yùn)行環(huán)境

    本篇文章詳細(xì)的介紹了使用Docker搭建Java Web運(yùn)行環(huán)境,想要學(xué)習(xí)docker的同學(xué)可以了解一下。
    2016-11-11

最新評(píng)論