預設情況下,mysql映象建立的docker容器啟動時只是乙個空的資料庫例項,為了簡化docker部署,我們需要
在docker建立mysql容器的時,資料庫和表已經自動建好,初始化資料也已自動錄入,也就是說容器啟動後資料庫就可用了。這就需要容器啟動時能自動執行sql指令碼。
在mysql官方映象中提供了容器啟動時自動執行/docker-entrypoint-initdb.d資料夾下的指令碼的功能(包括shell指令碼和sql指令碼)
docker-entrypoint.sh中下面這段**就是幹這事兒的
for f in /docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.sql) echo "$0: running $f"; "$" < "$f"; echo ;;
*.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "$"; echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
也就是說只要把你自己的初始化指令碼放到/docker-entrypoint-initdb.d/資料夾下就齊活了。
於是可以做這樣乙個簡單的dockerfile來例項我們的需求,其實關鍵的**就是最後一行了。
dockerfile
# docker image of facelog mysql
# version 1.0.0
# author guyadong
from mysql:5.6
maintainer guyadong([email protected])
# 複製資料庫初始化指令碼create_table.sql到/docker-entrypoint-initdb.d資料夾下
copy sql/create_table.sql /docker-entrypoint-initdb.d
啟動時檢查
dubbo 缺省會在啟動時檢查依賴的服務是否可用,不可用時會丟擲異常,阻止 spring 初始化完成,以便上線時,能及早發現問題,預設check true 可以通過check false 關閉檢查,比如,測試時,有些服務不關心,或者出現了迴圈依賴,必須有一方先啟動。另外,如果你的 spring 容器...
docker mysql啟動時執行初始化sql
1.拉取mysql映象 docker pull mysql 5.7 2.檢查mysql映象 docker inspect mysql 5.7 entrypoint docker entrypoint.sh 3.本地建立mysql外掛程式的目錄 掛載到容器內 docker entrypoint ini...
servlet啟動時載入
servlet預設是在第一次訪問的時候建立的物件。servlet啟動時載入,就是讓 tomcat 伺服器啟動的時候建立servlet的物件 servlet物件是第一次被訪問的時候會被建立的,init方法就會執行。假設在init方法中做了一些比較耗時的操作 比如 載入了一些配置檔案並且解析可能需要花費...