docker部署專案

2021-09-25 23:17:27 字數 1853 閱讀 7633

乙個專案必然包含資料庫、後台、前端。

我的專案是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...