乙個專案必然包含資料庫、後台、前端。
我的專案是mysql+springboot+vue,這篇blog是整個專案docker部署的筆記。
docker是一套開源的應用容器引擎,我們可以使用docker建立虛擬環境,在虛擬環境中安裝應用,執行應用程式,執行資料庫等等可以在真機上進行的操作。它就相當於是乙個執行在真機上的虛擬環境,但是可以通過真機提供外部對其的訪問。
images:映象,docker的虛擬環境。例如:你擁有乙個linux的image,它就是乙個濃縮版的linux,你可以像使用linux作業系統一樣使用它。
container:容器,docker中實際執行的程式,啟動image加上引數,docker會建立乙個container並執行起來。因此,你可以建立多個容器執行。
注:images和container的關係就像是類和例項的關係,乙個類可以有多個例項。
在開發伺服器上直接使用docker建立資料庫映象,然後把映象匯出,在執行伺服器上在把映象匯入的話,資料庫無法訪問。
我不知道原因是什麼,我猜可能是建立資料庫映象的時候映象裡面儲存了ip位址的相關資訊,在另一台機子上ip位址資訊會改變導致無法訪問。
所以我在開發伺服器上對資料庫進行備份,拿到backup.sql檔案,然後在執行伺服器上下乙個sql映象,然後資料恢復,其實也差不多,麻煩一點。
docker pull mysql
//執行映象,建立容器並執行
//-i是開啟stdin用於控制台互動,-t分配裝置,支援登入進入容器
//-d容器後台執行
//-p埠對映,前面3306指對外暴露的埠,後面3306指的是映象的埠號
//--name指名字,前乙個指建立的容器名(自定義),後乙個是映象名,也就是從哪個映象建立容器
//-e後面是配置容器的相關引數,不同的容器可能會有不同的引數,這裡配置的是mysql資料庫的密碼
docker run -it -d -p 3306
:3306
--name mysql mysql -e mysql_root_password
=root
//然後mysql資料庫就開始執行了
//在需要部署的時候,需要將mysql的資料dump下來並且從容器拿出來
//檢視正在執行的容器,找到mysql的container id
docker ps -a
//進入mysql容器,進入之後命令列就是乙個linux命令列,可以用ctrl+c退出返回windows
docker exec -it [container id]
/bin/bash
//建立資料庫備份
mysqldump -u root -p [database name]
>
/dump.sql
//然後退出容器,因為要把映象中的檔案拿出來到windows,所以在容器中是無法進行的
//從容器中cp檔案到windows本地
docker cp [container id]
:/dump.sql [本地路徑]
//然後指定的本地路徑下就會出現乙個dump.sql檔案
//在部署的時候,建立容器步驟一樣
略//將dump.sql檔案拷貝到容器中
docker cp [dump檔案路徑]
[container id]
:/dump.sql
//進入mysql容器中
mysql -u root -p
//輸入密碼進入mysql,然後恢復資料
source /dump.sql或者mysql -u root -p [database name]
<
/dump.sql
//資料遷移完畢
docker 部署web專案
修改docker容器的hosts 例如 add host puppetmaster 192.168.0.3 如果想新增多條,就用多個 add host就ok了 以www.china ops.com 為基礎做列 在china ops.com內建立檔案及資料夾,目錄結構如下 下面我們以啟動專案的順序來編...
Docker部署Springboot專案入門篇
建立docker資料夾,將dockerfile和jar包扔進去,我用的工具時x ftp 正常情況下會像下面這樣build成功 但是你也可能報 pull access denied for openjdk 8 jdk alpine,repository does not exist or may re...
Docker 部署Python專案
在目錄下面新建三個檔案 dockerfile,專案檔案,requirements.txt dockerfile檔案 基於映象基礎 from python 2.7 維護者資訊 maintainer name name 163.com 安裝所需的包 run pip install r requireme...