docker下將Javaweb專案部署到阿里的雲伺服器
概述
首先,需要到阿里雲的官網租一個雲伺服器,至於域名是否需要就看你的需要了,我的伺服器配置如下圖所示:
還需要準備好xshell6和winscp這兩個軟體,最好花點時間去熟悉下docker命令和vim。另外,下面所填寫的IP是阿里雲控制檯上顯示的公有IP不是私有IP。
docker學習資源:
vim學習資源:
xshell6:連結:https://pan.baidu.com/s/13feRI9m_bMPsKEhfGpElUQ 密碼:tads
winscp:連結:https://pan.baidu.com/s/1DGEvse-TGVJRqF5mBzrPSg 密碼:bbgj
一、安裝docker(CE版)
開啟xshell6,右鍵“所有會話”,在彈出選單中選擇新建會話,填上會話名字,雲伺服器主機的ip
然後點選使用者身份驗證,填好賬號和密碼並連線
1、安裝一些必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、新增軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新yum快取
sudo yum makecache fast
4、安裝docker-ce版
sudo yum -y install docker-ce
5、啟動docker後臺服務
sudo systemctl start docker
6、測試執行
docker run hello-world
二、安裝mysql映象(建議與你本地安裝的mysql版本相一致)
1、下載mysql映象(5.7版)
docker pull mysql:5.7
2、執行容器
docker run -p 3306:3306 --name mysql -v /root/conf:/etc/mysql/conf.d -v /root/data:/var/lib/mysql -v /root/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- -p 3306:3306:將容器的 3306 埠對映到主機的 3306 埠
- --name mysql : 容器的名字
- -v /root/conf:/etc/mysql/conf.d:將目錄/root/conf/my.conf掛在到容器的 /etc/mysql/my.cnf
- -v /root/data:/var/lib/mysql : 將目錄/root/data掛在到容器的/var/lib/mysql,本地資料庫資料夾就是上傳到/root/data目錄下
- -v /root/logs:/logs : 將目錄/root/logs掛載到容器的/logs
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 使用者的密碼
通過命令docker inspect mysql檢視mysql容器的配置資訊,下圖是部分截圖
3、進入mysql容器(exit命令可以退出容器)
docker exec -it mysql /bin/bash
4、進入mysql命令列介面
mysql -u root -p
回車後輸入密碼即可,密碼是步驟2所設定的--123456
此介面就可以使用mysql命令行了,可以使用show命令檢視預設的資料庫有哪些,鍵入exit即可退出
5、開啟winscp,點選新建站點,輸入IP、賬號、密碼,然後登入,此軟體是用來上傳檔案到與伺服器的
winscp登入後介面分為兩部分,左邊是本地的檔案,可以從這裡選擇檔案進行上傳;右邊是雲伺服器的目錄,也可以將你需要上傳的檔案直接貼上到你想要上傳的目錄中即可實現檔案上傳
6、去到本地mysql的安裝目錄下的data目錄,將資料庫的資料夾(以book_stores為例),貼上到雲伺服器的/root/data目錄下
7、重啟mysql容器後,使用命令docker exec -it mysql /bin/bash進入容器,然後進入mysql命令列介面mysql -u root -p,依次執行以下命令
- show databases; --顯示所有資料庫
- use book_stores; --選擇book_stores資料庫
- show tables; --顯示book_stores資料庫下的所有表
8、執行select * from big_img;命令,如果能夠把表裡的資料全部查詢出來,就無需下面的操作了,下圖是查詢失敗的
見步驟6中的截圖,將本地的ibdata1檔案通過winscp上傳到/root/data目錄下,直接將原來的ibdata1檔案覆蓋掉,使用exit命令,退出mysql介面和mysql容器,重啟mysql容器docker restart mysql,然後進入mysql容器,再進入mysql命令列介面,執行以下命令
- use book_stores;
- select * from big_img;
9、步驟8中的截圖中出現了中文亂碼,如果沒有出現此問題,可以忽略此步驟
- 在本地新建好my.cnf檔案,並將以下內容貼上進去
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
- 用winscp將my.cnf檔案上傳到雲伺服器的/root/conf目錄下,然後按照步驟8的操作重新進入mysql命令列介面,再次執行select語句
到這裡,mysql的部署就完成了
三、安裝Tomcat映象(最新版的)
1、下載最新版的tomcat映象
docker pull tomcat --預設是最新版的
2、執行容器
docker run --name tomcat -p 80:8080 -v /root/javaweb:/usr/local/tomcat/webapps --link mysql:db -d tomcat
- --name tomcat : 容器的名字
- -p 80:8080 : 將tomcat容器的8080埠對映到主機的80埠
- -v /root/javaweb:/usr/local/tomcat/webapps : 將容器的目錄/usr/local/tomcat/webapps對映到主機的目錄/root/javaweb,上傳的Javaweb專案打包好仍在這(/root/javaweb)就行了
- --link mysql:db : 與mysql容器建立起連線,否則,在發起連線請求時,會出現mysql拒絕連線的錯誤,而db是mysql容器IP的別名,那麼在java程式碼中就不能使用localhost了,而是db
可以利用docker inspect tomcat命令檢視其配置資訊,不截圖了
3、修改java程式碼
4、在eclipse中將專案打包成war,然後用winscp上傳到/root/javaweb目錄下
右鍵需要打包的專案->Export->WAP file->按提示操作
上傳檔案,扔到/root/javaweb目錄下就行了
5、測試執行
如果頁面能正常顯示,操作也正常,那就表示成功了
四、繫結域名
需要登入阿里雲,去到域名控制檯,將雲解析配置好,然後將IP改成域名,重新執行,頁面能訪問就表示成功了,埠80預設是可以省略,即域名後無需加埠,除非所對映的主機埠不是80