docker快速部署本地項目到服務器(tomcat8+mysql8)


目標是:將本地運行的spring項目,部署到服務器上

為什么使用docker?

  1. 環境隔離 服務器上,各種環境交雜,使用docker,能清楚的把各個項目進行隔離,不單維護的人員方便,也會省去很多維護這些項目交雜的時間。
  2. 真的是太輕量 每個docker是構建於一層一層的結構之上的,變化的只是這一層一層的變化的部分,docker的大小也非常之小
  3. 下載方便,想要獲得一個鏡像,只要pull一下就好了,和git的使用差不多哦

部署前提:

mysql文件,mysql關聯文件,war包,傳到服務器上,我傳入的地址為/var/supplychain/ 別問我為什么要傳到這里,我領導讓的。

我的部署流程

docker mysql部署

  1. 建立docker 數據庫:
docker run -di --name scf_mysql -p 33306:3306 \
-v /var/supplychain/image:/var/supplychain/image -e MYSQL_ROOT_PASSWORD=123456 mysql  \
--lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

參數說明:
-d
后台執行
-i
開控制台交互
--name
為這個開啟的容器,命名
-p
進行端口映射,將宿主機的33306端口映射到容器的3306
-v
掛載宿主機/var/supplychain/image/這個目錄到容器的/var/supplychain/image/目錄
-e
指定容器的環境變量,這里是指定的mysql容器中mysql的密碼為123456
--lower_case_table_names=1
忽略數據表名的大小寫,這是個深坑哦,踩了2天
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
設置中文編碼格式為utf8

  1. 刷入表數據
docker cp /var/supplychain/j.sql     容器ID:/         #將j.sql拷貝到容器的根目錄下
docker exec -it scf_mysql /bin/bash/                    #進入容器的交互環境
mysql -uroot -p                                                     #進入mysql
create database julonglian;
use julonglian;
source /j.sql
  1. 對表用戶進行授權
    對於mysql5來說:
grant all privileges on julonglian.* to 'why'@'%' identified by '123456';
flush privileges;

對於mysql8來說:

創建賬戶:create user 'why'@'%' identified by '123456';
賦予權限:grant all on *.* to 'why'@'%' with grant option;(修改權限時在后面加with grant option)
flush privileges;

docker tomcat部署

docker run -d -p 7608:8080 --name supplychain -v /var/supplychain/image:/var/supplychain/image -v /var/supplychain/server.xml:/usr/local/tomcat/conf/server.xml tomcat

  1. 為解決的事是:不知道為什么server.xml 掛載不上去,只要掛載這個,就啟動不了,看來只能拷貝了
    為什么要改這個呢?有時候,需要項目的上下文根路徑修改為/,所以就需要動這個配置文件
    tomcat8是在這個文件中,加入
    server.xml :

  2. 修改上下文根路徑
    拷貝過去:

sudo docker cp /var/supplychain/server.xml 容器ID:/usr/local/tomcat/conf/server.xml   不同版本可能server.xml放的位置不一樣,具體去容器里面看看

進入容器
cd webapps/ROOT/
rm -rf *
cd ..
mv 項目war包和解壓的文件 ROOT/

代碼中需要變動的地方

  1. 數據庫url地址修改為docker內網ip地址訪問地址,比如:使用docker inspect mysql的docker內網ip,進行查看其ip
  2. 數據庫驅動的版本要對應上,比如:本地跑的時候使用的是mysql5,驅動啊,url等要進行變更。
  3. mybatis的一些數據庫url配置也需要相應修改(我這里沒有)

參考

Docker實現運行tomcat並部署項目war包,並實現掛載目錄
Docker部署MySql應用
docker中mysql數據庫的數據導入和導出
linux命令行打包、壓縮及解壓縮
通過容器提交鏡像(docker commit)以及推送鏡像(docker push)

進一步的呢:如果本地直接打包成一個鏡像push到庫中,在遠程pull下來就又會快很多,這就又是另一篇文章了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM