欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL容器中docker-entrypoint-initdb.d目錄的使用

 更新時間:2024年05月21日 15:08:58   作者:學(xué)亮編程手記  
這篇文章主要介紹了MySQL容器中docker-entrypoint-initdb.d目錄的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MySQL容器docker-entrypoint-initdb.d目錄

docker-entrypoint-initdb.d 是一個特殊的目錄,專用于 Docker 中的 MySQL 容器。

當(dāng)使用 Docker 運行 MySQL 容器時,如果這個目錄存在并且包含 SQL 腳本或其它可執(zhí)行文件,Docker 會在 MySQL 服務(wù)啟動之初自動執(zhí)行這些腳本。

這一機制使得在首次啟動容器時能夠方便地進行一些初始化設(shè)置,比如創(chuàng)建數(shù)據(jù)庫、表、用戶,以及導(dǎo)入數(shù)據(jù)等。

具體來說,docker-entrypoint-initdb.d

目錄下的文件執(zhí)行有以下特點:

  • 執(zhí)行順序通常是按文件名排序。
  • 支持 .sh 腳本(可執(zhí)行權(quán)限)和 SQL 腳本(.sql)。
  • 這些腳本只在容器的 MySQL 數(shù)據(jù)卷為空時運行,即首次啟動時。如果數(shù)據(jù)卷已有數(shù)據(jù)(例如容器重啟),這些初始化腳本不會再次執(zhí)行,以防止數(shù)據(jù)被重復(fù)初始化覆蓋。

利用這個機制,開發(fā)者可以通過 Dockerfile 或者在運行容器時通過 -v 選項掛載包含初始化腳本的本地目錄到 docker-entrypoint-initdb.d,從而實現(xiàn) MySQL 容器的自動化配置和數(shù)據(jù)初始化。

docker-entrypoint-initdb.d下的sql腳本在啟動docker時沒有執(zhí)行原因

docker鏡像啟動時會執(zhí)行entrypoint.sh腳本;

其中關(guān)于是否執(zhí)行數(shù)據(jù)庫初始化的核心代碼如下: 

由腳本可以看出,對于docker-entrypoint-initdb.d 目錄下的sql 文件,在執(zhí)行前會判斷  DATABASE_ALREADY_EXISTS 是否為false

即 $DATADIR/mysql 目錄并不存在;

但凡該服務(wù)器已經(jīng)存在任何數(shù)據(jù)庫,那么這個文件肯定不為空,故而不會執(zhí)行sql腳本; 

docker_setup_env() {
	# Get config
	declare -g DATADIR SOCKET
	DATADIR="$(mysql_get_config 'datadir' "$@")"
	SOCKET="$(mysql_get_config 'socket' "$@")"

	# Initialize values that might be stored in a file
	file_env 'MYSQL_ROOT_HOST' '%'
	file_env 'MYSQL_DATABASE'
	file_env 'MYSQL_USER'
	file_env 'MYSQL_PASSWORD'
	file_env 'MYSQL_ROOT_PASSWORD'

	declare -g DATABASE_ALREADY_EXISTS
	if [ -d "$DATADIR/mysql" ]; then
		DATABASE_ALREADY_EXISTS='true'
	fi
}


_main() {
        # if command starts with an option, prepend mysqld
        if [ "${1:0:1}" = '-' ]; then
                set -- mysqld "$@"
        fi

        # skip setup if they aren't running mysqld or want an option that stops mysqld
        if [ "$1" = 'mysqld' ] && ! _mysql_want_help "$@"; then
                mysql_note "Entrypoint script for MySQL Server ${MYSQL_VERSION} started."

                mysql_check_config "$@"
                # Load various environment variables
                docker_setup_env "$@"
                docker_create_db_directories

                # If container is started as root user, restart as dedicated mysql user
                if [ "$(id -u)" = "0" ]; then
                        mysql_note "Switching to dedicated user 'mysql'"
                        exec gosu mysql "$BASH_SOURCE" "$@"
                fi

                # there's no database, so it needs to be initialized
                if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
                        docker_verify_minimum_env

                        # check dir permissions to reduce likelihood of half-initialized database
                        ls /docker-entrypoint-initdb.d/ > /dev/null

                        docker_init_database_dir "$@"
                        ......

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Docker安裝SonarQube的詳細(xì)教程

    使用Docker安裝SonarQube的詳細(xì)教程

    這篇文章主要介紹了Docker安裝SonarQube的教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Docker堆棧的管理操作詳解

    Docker堆棧的管理操作詳解

    這篇文章主要介紹了Docker堆棧的管理操作,結(jié)合實例形式分析了Docker堆棧管理相關(guān)的新服務(wù)添加、部署、數(shù)據(jù)持久化等操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • 詳解Docker 端口映射與容器互聯(lián)

    詳解Docker 端口映射與容器互聯(lián)

    這篇文章主要介紹了詳解Docker 端口映射與容器互聯(lián) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docke更新應(yīng)用程序的過程詳解

    Docke更新應(yīng)用程序的過程詳解

    這篇文章主要介紹了Docke更新應(yīng)用程序,在本節(jié)中,您學(xué)習(xí)了如何更新和重建容器,以及如何停止和刪除容器,需要的朋友可以參考下
    2023-11-11
  • Docker自定義安裝更改默認(rèn)安裝位置簡單方法

    Docker自定義安裝更改默認(rèn)安裝位置簡單方法

    安裝Docker的過程相對簡單,你只需要雙擊下載的安裝程序并按照提示進行安裝即可。在安裝過程中,你可以選擇自定義安裝選項,這篇文章主要給大家介紹了關(guān)于Docker自定義安裝更改默認(rèn)安裝位置的簡單方法,需要的朋友可以參考下
    2024-01-01
  • docker網(wǎng)段沖突如何解決

    docker網(wǎng)段沖突如何解決

    這篇文章主要為大家介紹了docker網(wǎng)段沖突的解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-05-05
  • docker-compose+nginx部署前后端分離的項目實踐

    docker-compose+nginx部署前后端分離的項目實踐

    本文主要介紹了docker-compose?+?nginx部署前后端分離的項目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Docker安裝RabbitMQ AMQP協(xié)議及重要角色

    Docker安裝RabbitMQ AMQP協(xié)議及重要角色

    這篇文章主要為大家介紹了Docker安裝RabbitMQ AMQP協(xié)議和主要角色詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Docker中Dockerfile之容器中運行MyEclipse搭建的JavaWeb項目

    Docker中Dockerfile之容器中運行MyEclipse搭建的JavaWeb項目

    本篇文章主要介紹了Docker中Dockerfile之容器中運行MyEclipse搭建的JavaWeb項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • docker里面不能使用vim的問題及解決

    docker里面不能使用vim的問題及解決

    這篇文章主要介紹了docker里面不能使用vim的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論