最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

本文提要

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

搭建步驟

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è)置容器啟動時執(zhí)行的命令
CMD ["sh", "/mysql/setup.sh"]

2、編寫容器啟動腳本setup.sh:

#!/bin/bash
set -e

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

echo '1.啟動mysql....'
#啟動mysql
service mysql start
sleep 3
echo `service mysql status`

echo '2.開始導入數(shù)據(jù)....'
#導入數(shù)據(jù)
mysql < /mysql/schema.sql
echo '3.導入數(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容器啟動完畢,且數(shù)據(jù)導入成功`

tail -f /dev/null

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

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

-- 創(chuàng)建數(shù)據(jù)庫
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');

因為是測試,所以隨便寫了一個建表語句,如果是真實項目肯定不止這一張表,直接將建表語句覆蓋過來就好。

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

use mysql;
select host, user from user;
-- 因為mysql版本是5.7,因此新建用戶為如下命令:
create user docker identified by '123456';
-- 將docker_mysql數(shù)據(jù)庫的權(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,'.'表示當前目錄,即Dockerfile文件所在的目錄,創(chuàng)建過程如下:

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

創(chuàng)建成功。

6、啟動容器

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

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

容器啟動成功。

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

驗證結(jié)果

1、通過進入容器在命令行驗證

啟動時容器的id為9db491b1d760,因此執(zhí)行exec命令進入容器:

docker exec -it 9db491b1d760 /bin/bash

這個命令不要直接使用,因為在你機器上id可能不同,替換掉id值即可。

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

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

整個過程如下:

通過圖中的結(jié)果對比,與前文一致,驗證成功。

2、通過mysql客戶端管理軟件驗證

通過圖中的結(jié)果對比,與前文一致,驗證成功。

結(jié)語

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

相關(guān)文章

  • 多云環(huán)境下的Docker部署策略實現(xiàn)

    多云環(huán)境下的Docker部署策略實現(xiàn)

    在多云環(huán)境下,Docker容器技術(shù)為應用程序的部署提供了高度的靈活性和可擴展性,本文就來介紹一下多云環(huán)境下的Docker部署策略實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 詳解Docker之Compose服務(wù)編排

    詳解Docker之Compose服務(wù)編排

    Compose是Docker的服務(wù)編排工具,主要用來構(gòu)建基于Docker的復雜應用,Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進行開發(fā)的場景。興趣的小伙伴們可以參考一下
    2018-07-07
  • Docker如何刪除鏡像

    Docker如何刪除鏡像

    本文詳細介紹了如何使用Docker刪除鏡像,包括查看鏡像、刪除單個鏡像、刪除多個鏡像、刪除所有鏡像以及注意事項,刪除鏡像是一個常見的操作,用于清理不再需要的鏡像,以節(jié)省存儲空間
    2025-03-03
  • 簡單談?wù)凞ocker鏡像的使用方法

    簡單談?wù)凞ocker鏡像的使用方法

    本次分享從個人的角度,講述對于Docker鏡像的使用方法,包括了從從Docker Hub或者其他鏡像源安裝Docker鏡像,從Image file安裝Docker鏡像,從Docker file制作Docker鏡像,有需要的小伙伴可以參考下
    2016-10-10
  • Docker?容器中安裝?nvm工具的步驟

    Docker?容器中安裝?nvm工具的步驟

    這篇文章主要介紹了在Docker容器中安裝nvm工具的步驟,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Docker容器搭建并運行實現(xiàn)過程詳解

    Docker容器搭建并運行實現(xiàn)過程詳解

    這篇文章主要介紹了Docker容器搭建并運行實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Docker中conda環(huán)境的導出和導入

    Docker中conda環(huán)境的導出和導入

    現(xiàn)在很多的應用程序系統(tǒng)都會選擇使用docker容器進行部署,本文主要介紹了Docker中conda環(huán)境的導出和導入,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 第一次構(gòu)建、運行、發(fā)布、獲取docker鏡像的步驟詳解

    第一次構(gòu)建、運行、發(fā)布、獲取docker鏡像的步驟詳解

    今天小編就為大家分享一篇關(guān)于第一次構(gòu)建、運行、發(fā)布、獲取docker鏡像的步驟詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • docker容器從入門到癡迷(推薦)

    docker容器從入門到癡迷(推薦)

    這篇文章主要介紹了docker容器從入門到癡迷,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 關(guān)于docker啟動jenkins環(huán)境的問題

    關(guān)于docker啟動jenkins環(huán)境的問題

    這篇文章主要介紹了docker啟動jenkins環(huán)境的問題,文中提到了jenkins基本工作原理及管理員密碼獲取方法,對docker啟動jenkins環(huán)境相關(guān)知識感興趣的朋友一起看看吧
    2022-04-04

最新評論

萨迦县| 巴青县| 七台河市| 苏尼特左旗| 元江| 巢湖市| 吐鲁番市| 宁国市| 鄂州市| 涟源市| 云龙县| 吴旗县| 三原县| 宜昌市| 卓资县| 板桥市| 赫章县| 望江县| 山阴县| 丹凤县| 潮州市| 多伦县| 厦门市| 会宁县| 罗山县| 盖州市| 衡南县| 锡林郭勒盟| 江油市| 泰来县| 农安县| 奉化市| 六盘水市| 克东县| 仙游县| 山东省| 高碑店市| 射洪县| 包头市| 枣强县| 抚州市|