Docker 部署前后端項目
平生不會相思,才會相思,便害相思。
簡介:都是被逼的,從零開始一個Docker 部署九個微服務和三個前端項目。其中,這些服務需要用到Nacos、MySQL、Nginx、ElasticSearch、Kibana、Redis、JDK和 Minio 文件存儲服務器。當然真實環境不會在一台服務器上或者一個Docker中安裝部署這么多東西,由於本機只開了一台虛擬機所以是在同一個虛擬機中安裝部署的,到正式環境上就把幾個存儲數據的和運行項目的分別安裝部署到多個服務器上即可。
一、准備工作:
1、九個微服務+三個前端項目。
2、一台虛擬機,Linux 和Ubuntu 都可以,本次選擇的是帶有圖形界面的Ubuntu 系統。
二、簡單了解Docker
解決的問題
由於不同的機器有不同的操作系統,以及不同的庫和組件,在將一個應用部署到多台機器上需要進行大量的環境配置操作。
Docker 主要解決環境配置問題,它是一種虛擬化技術,對進程進行隔離,被隔離的進程獨立於宿主操作系統和其它隔離的進程。使用 Docker 可以不修改應用程序代碼,不需要開發人員學習特定環境下的技術,就能夠將現有的應用程序部署在其它機器上。
與虛擬機的比較
虛擬機也是一種虛擬化技術,它與 Docker 最大的區別在於它是通過模擬硬件,並在硬件上安裝操作系統來實現。
啟動速度
啟動虛擬機需要先啟動虛擬機的操作系統,再啟動應用,這個過程非常慢;
而啟動 Docker 相當於啟動宿主操作系統上的一個進程。
占用資源
虛擬機是一個完整的操作系統,需要占用大量的磁盤、內存和 CPU 資源,一台機器只能開啟幾十個的虛擬機。
而 Docker 只是一個進程,只需要將應用以及相關的組件打包,在運行時占用很少的資源,一台機器可以開啟成千上萬個 Docker。
優勢
除了啟動速度快以及占用資源少之外,Docker 具有以下優勢:
1. 更容易遷移
提供一致性的運行環境。已經打包好的應用可以在不同的機器上進行遷移,而不用擔心環境變化導致無法運行。
2. 更容易維護
使用分層技術和鏡像,使得應用可以更容易復用重復的部分。復用程度越高,維護工作也越容易。
3. 更容易擴展
可以使用基礎鏡像進一步擴展得到新的鏡像,並且官方和開源社區提供了大量的鏡像,通過擴展這些鏡像可以非常容易得到我們想要的鏡像。
鏡像與容器
鏡像是一種靜態的結構,可以看成面向對象里面的類,而容器是鏡像的一個實例。
鏡像包含着容器運行時所需要的代碼以及其它組件,它是一種分層結構,每一層都是只讀的(read-only layers)。構建鏡像時,會一層一層構建,前一層是后一層的基礎。鏡像的這種分層存儲結構很適合鏡像的復用以及定制。
構建容器時,通過在鏡像的基礎上添加一個可寫層(writable layer),用來保存着容器運行過程中的修改。
三、Docker 安裝與使用
准備一台虛擬機,Linux 和Ubuntu 操作系統的都可以,本人在VMWare 上兩個操作系統都有安裝,但是Ubuntu 的是有圖形操作界面,用起來更舒適,所以接下來的操作都是基於Ubuntu 系統的,但是Linux 和Ubuntu 系統區別不大,命令什么的大多也通用。
安裝
查看docker是否安裝:
docker version
1、更新ubuntu 的apt 源索引:
sudo apt-get update
2、設置 apt可以通過Https 使用存儲庫(repository)
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
3、添加Docker 官方GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、設置Stable存儲庫,即docker 穩定倉庫
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5、再次更新apt 包索引並安裝最新的Docker CE 版本
sudo apt-get update
sudo apt-get install -y docker-ce
6、查看Docker 是否安裝成功並確認服務是否已經啟動
docker version
systemctl status docker
查看docker 運行狀態,已啟動:
如果檢查未啟動執行一下
sudo systemctl start docker
7、經典Hello World
sudo docker run hello-world
使用
1、啟動與停止
安裝完成Docker 后,默認已經啟動了docker服務,如需手動控制docker服務的啟停,可執行如下命令。
# 啟動docker
sudo service docker start
# 停止docker
sudo service docker stop
# 重啟docker
sudo service docker restart
docker 安裝完成,一般用戶沒有權限啟動docker 服務,只能通過sudo 來通過root 用戶權限來啟動docker,此時對於一般用戶而言,需要執行docker ps 或者docker images 命令查看容器或者鏡像提示如題所示的錯誤。
解決辦法:
1、使用sudo docker ps或者sudo docker images,但是每次都要輸入密碼。
2、把普通用戶加入到docker 組中
這里的普通用戶是tjt,組docker 在安裝docker 的時候,就已經添加了,所以只需要執行兩個操作即可:
1 sudo gpasswd -a $USER docker 2
3 newgrp docker
將tjt 用戶加入docker 組之后,發現使用docker ps或者docker images 不會提示權限不足了。
2、 Docker 鏡像操作
四、在Docker 中安裝和配置nacos
1、查找nacos的鏡像,執行命令
docker search nacos
2、拉取nacos 鏡像
docker pull nacos/nacos-server:1.1.4
這邊沒有安裝最新版,而是指定了版本號。
docker images 查看是否拉取nacos 鏡像成功
3、啟動nacos服務
指令:
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.1.4
查看是否啟動成功:docker ps
4、打開瀏覽器測試訪問nacos
初始賬號/密碼為:nacos/nacos
4、設置NACOS 自動啟動
指令:docker update --restart=always 963217d51c36(最后一項為nacos容器的CONTAINER ID)
docker update --restart=always 963217d51c36
5、Nacos 配置
把每個微服務的bootstrap.yml 配置文件內容寫到nacos.
連接虛擬機服務器,上傳nacos 配置文件到服務器,解壓后導入nacos 列表。
解壓后單個加入,或者無需解壓,點擊“導入配置”按鈕,以zip 壓縮包形式批量導入所有微服務的bootstrap.yml 配置文件。
五、Docker 安裝MySQL
1、查找Docker Hub 上的mysql 鏡像
docker search mysql
2、拉取 MySQL 鏡像
latest 這里拉取官方的最新版本的鏡像:
docker pull mysql:latest
3、查看本地鏡像
使用以下命令來查看是否已安裝了 mysql:
docker images
4、運行容器
安裝完成后,我們可以使用以下命令來運行 mysql 容器:
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
參數說明:
- -p 3306:3306 :映射容器服務的 3306 端口到宿主機的 3306 端口,外部主機可以直接通過 宿主機ip:3306 訪問到 MySQL 的服務。
- MYSQL_ROOT_PASSWORD=123456:設置 MySQL 服務 root 用戶的密碼。
5、安裝成功
通過 docker ps 命令查看是否安裝成功:
至此,使用docker 安裝mysql 的工作就已經完成了。
以后使用如下命令開啟並執行名為mysqldb 的容器:
1 sudo docker start mysqldb 2 sudo docker exec -it mysqldb /bin/bash
使用如下命令關閉名為mysqldb 的容器:
sudo docker stop mysqldb
6、Docker 中mysql 簡單交互
(1)輸入命令連接mysql:
本機可以通過 root 和密碼 123456 訪問 MySQL 服務。
直接通過-u root 命令訪問mysql 輸入會報錯,先安裝mysql-server
sudo apt-get install mysql-server
彈框提示輸入mysql 的root 密碼和確認密碼
輸入密碼后可以訪問,但報了個mysql.socket 的錯
修改/etc/my.cnf
tjt@tjt-virtual-machine:~$ vim /etc/my.cnf
添加以下內容到/etc/my.conf:

1 [client] 2
3 socket = /Data/mydata/mysql.sock 4
5 [mysqld] 6
7 socket = /Data/mydata/mysql.sock
我使用的不是root 用戶編輯文件,無法保存,所以退出時強制保存:w ! sudo tee %
一頓操作后,發現還是不行-報錯,白搞了。
原來,我們的mysql 是安裝在docker 中,系統中並沒有mysql,也是通過docker 命令啟動的,所以要先進入docker容器,再能啟動對應的mysql。
進入容器
docker exec -it 容器ID /bin/bash
進入mysql,啟動容器的時候初始密碼已經設置為了:123456
mysql -u root -p
簡單測試MySQL 數據庫是否可以用
7、MySQL 數據導入
由於待會運行后端項目,登錄系統需要用到賬號和密碼,索性在這里把MySQL 數據導入Docker 容器中的MySQL。
1、從本地數據庫導出SQL
2、進入mysql的docker容器
3、創建數據庫
4、將sql 文件copy 到docker 容器里
進入容器,執行.sql 文件,完成數據導入初始化。
六、 docker 安裝redis
1、獲取 redis 鏡像
這里我拉取官方的最新版本的鏡像:
docker pull redis
2、查看本地鏡像
docker images
3、運行容器
安裝完成后,我們可以使用以下命令來運行 redis 容器:
docker run -itd --name redis-test -p 6379:6379 redis
參數說明:
- -p 6379:6379:映射容器服務的 6379 端口到宿主機的 6379 端口。外部可以直接通過宿主機ip:6379 訪問到 Redis 的服務。
4、安裝成功
最后我們可以通過 docker ps 命令查看容器的運行信息:
通過 redis-cli 連接測試使用 redis 服務。
首先進入redis容器
docker exec -it redis-test /bin/bash
七、Docker 安裝 jdk1.8
1、查找jdk
docker search jdk
2、下載 jdk
docker pull kdvolder/jdk8
3、查看是否下載成功
docker images
4、啟動
docker run -di --name=jdk1.8 kdvolder/jdk8
5、查看是否啟動成功
docker ps
6、查看JDK 版本
首先要進入jdk8 容器
docker exec -it jdk1.8 /bin/bash
再查看jdk 版本
八、Docker 安裝ElasticSearch
1、拉取 es 的 docker 鏡像
這里拉取 7.8.0 版本
docker pull elasticsearch:7.8.0
2、拉好鏡像后,docker images查看鏡像
3、接下來直接啟動 docker 中的 es 鏡像就好了
# -d : 后台運行
# -p : 指定宿主機與docker啟動容器的端口映射
# --name : 為 elasticsearch 容器起個別名
# -e : 指定為單節點集群模式
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.0
啟動后docker ps 查看是否成功
4、訪問測試
瀏覽器輸入: http://localhost:9200/ ,或者終端輸入: curl http://localhost:9200/ 來檢查es 是否安裝成功。
在虛擬機內瀏覽器訪問:
也可以帶上IP 在非虛擬機內瀏覽器訪問:
終端訪問:
curl XGET "localhost:9200"
九、Docker 安裝 Kibana
Kibana 是一款適用於 es 的數據可視化和管理工具, 可以提供實時的直方圖、線形圖、餅狀圖和地圖。
需要注意的是, kibana 的版本最好與 elasticsearch 保持一致, 避免發生不必要的錯誤。
1、拉取Kinaba 鏡像
直接和 es 版本保持一致:
docker pull kibana:7.8.0
2、查看Kibana 鏡像是否拉取到本地docker images
3、Docker 啟動 Kibana
7.8.0 版本的 kibana 包比較大, 啟動較慢, 稍等個半分鍾
# -e : 指定環境變量配置, 提供漢化
# --like : 建立兩個容器之間的關聯, kibana 關聯到 es
docker run -d --name kibana --link elasticsearch:elasticsearch -e "I18N_LOCALE=zh-CN" -p 5601:5601 kibana:7.8.0
# kibana 的漢化我感覺做的並不好# 如果不習慣漢化, 可以把條件去除
docker run -d --name kibana --link elasticsearch:elasticsearch -p 5601:5601 kibana:7.8.0
docker ps 查看是否docker 啟動成功:
4、訪問測試
在虛擬機內的瀏覽器輸入地址 http://localhost:5601/, 測試啟動成功
在非虛擬機內瀏覽器打開需改變IP 地址:
發現輸入地址后即可訪問,下面還要配置下密碼
5、修改ES 配置
1、進入容器&打開文件
docker exec -it 容器ID bash
tjt@tjt-virtual-machine:~$ docker exec -it 2ec6df4ed409 bash
cd config vi elasticsearch.yml
2、編輯文件
http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
3、設置密碼
先重啟下es 再執行
tjt@tjt-virtual-machine:~$ docker restart 2ec6df4ed409 tjt@tjt-virtual-machine:~$ docker exec -it 2ec6df4ed409 bash [root@2ec6df4ed409 elasticsearch]# cd bin [root@2ec6df4ed409 bin]# elasticsearch-setup-passwords interactive
逐個輸入密碼,這里都是123456 比較好記。
重啟es 訪問:
tjt@tjt-virtual-machine:~$ docker restart 2ec6df4ed409
到虛擬機內部瀏覽器訪問es,http://localhost:9200/,提示輸入密碼
6、修改Kibana 配置
1、進入容器&打開文件
docker exec -it kibana bash cd config vi kibana.yml
添加下面三行:
elasticsearch.username: "elastic" elasticsearch.password: "123456" i18n.locale: "zh-CN
重啟Kibana 訪問:
因為es 配置了密碼,所以Kibana 重啟前的登錄界面使用的是es 的:
重啟后使用Kibana 登錄密碼界面風格:
十、DOCKER -MINIO 文件存儲服務器安裝
1.操作minio 鏡像
tjt@tjt-virtual-machine:~$ docker search minio
2.拉取鏡像
docker pull minio/minio
裝錯了minio,可以刪除容器,再重新安裝。
3、再戰Minio,這次的Minio 安裝是從官網搞來的命令
https://docs.min.io/docs/minio-docker-quickstart-guide.html
docker run \ -p 9000:9000 \ -p 9001:9001 \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ minio/minio server /data --console-address ":9001"
4、訪問測試
重啟Minio,查看Minio 容器日志得到訪問地址:http://127.0.0.1:9000
上面配置了端口,9000回調到9001
在虛擬機內訪問Minio 登錄頁:
登錄賬號是剛剛自己寫進去的:
1 賬號:AKIAIOSFODNN7EXAMPLE 2 密碼:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
可以在Account 下修改密碼:
新建用戶:
minio/minio123
賦予minio 用戶策略權限,新建用戶后沒有授予對應的策略也形同虛設。
十一、Docker 安裝 Nginx
1、docker search nginx 命令來查看可用版本。
docker search nginx
2、取最新版的 Nginx 鏡像
這里我拉取官方的最新版本的鏡像:
docker pull nginx:latest
3、查看本地鏡像
使用以下命令來查看是否已安裝了 nginx:
docker images
4、運行容器
安裝完成后,我們可以使用以下命令來運行 nginx 容器:
docker run --name nginx-test -p 8080:80 -d nginx
參數說明:
--name nginx-test:容器名稱。
-p 8080:80: 端口進行映射,將本地 8080 端口映射到容器內部的 80 端口。
-d nginx: 設置容器在在后台一直運行。
5、安裝成功測試
最后我們可以通過瀏覽器可以直接訪問 IP + 8080 端口的 nginx 服務:
在虛擬機中瀏覽器通過localhost 訪問報錯:
修改如下:
ssl錯誤,請求用http,不用https
6、如何在本地目錄上掛載配置文件
我們安裝完nginx 后會發現配置文件在哪,日志文件目錄在哪,web項目放到那個目錄下,等等。
docker run一個鏡像會生成一個容器,而我們需要修改的配置文件日志文件等等都在這個容器里
進入容器bash
1. 進入容器bash
tjt@tjt-virtual-machine:~$ docker exec -it 06191d8f5fab /bin/bash
因為是在docker 容器中編輯,與外部隔絕,需要在docker 中安裝vim
vim 安裝好后,再次執行
root@06191d8f5fab:/# vim /etc/nginx/nginx.conf
按照自己的需要修改ngnix配置文件
7、ngnix 第二種安裝方式-將配置文件等目錄掛載到本地
這個操作對於以后修改很方便,推薦這一種
1. 首先在本地准備我們的掛載目錄以及配置文件
如果是普通用戶,先授予普通用戶root 權限,才方便准備本地配置文件,否則會提示權限不足。
授予用戶tjt root 權限
tjt ALL=(ALL:ALL) ALL
發現還是沒有root 用戶好使,直接su 切換到root 用戶操作,新增 conf、conf.d、logs、html 四個文件夾
建好目錄后還需要兩修改兩個配置文件
nginx.conf
default.conf
這兩個配置文件可以從之前安裝的docker nginx鏡像中拷貝,也可以從其他環境中拷貝一份配置。
配置文件創建完成后我們再在html 目錄下隨便新建一個index.html 頁面用於測試Nginx
html 的內容隨便寫一點:
2. 然后我們就可以在運行時指定掛載目錄了
先要刪除之前方法一安裝的ngnix 鏡像
掛載日志目錄
掛載配置目錄
掛載主配置文件
命令:
docker run --name docker_nginx -d -p 8080:80 \ > -v /home/docker/nginx/logs:/var/log/nginx \ > -v /home/docker/nginx/conf.d:/etc/nginx/conf.d \ > -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ > -v /home/docker/nginx/html:/usr/share/nginx/html nginx
解釋下上面的命令:
--name 給你啟動的容器起個名字,以后可以使用這個名字啟動或者停止容器
-p 映射端口,將docker 宿主機的80 端口和容器的80 端口進行綁定
-v 掛載文件用的,第一個-v 表示將你本地的nginx.conf 覆蓋你要起啟動的容器的nginx.conf文件,第二個表示將日志文件進行掛載,就是把nginx 服務器的日志寫到你docker 宿主機的/home/docker-nginx/log/ 下面
第三個-v 表示的和第一個-v 意思一樣的。
-d 表示啟動的是哪個鏡像
通過docker ps 查看ngnix 是否安裝成功
3、訪問測試
在虛擬機內瀏覽器測試:localhost:8080
十二、安裝docker-compose
安裝docker-compose ,使用docker-compose.yml 編排微服務的啟動。
0.查看是否安裝
docker-compose --version
1.進入https://github.com/docker/compose/releases 查看最新版本,當前版本為1.23.1
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2.git 下載docker-composer 太慢了,可以使用如下鏈接
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3.設置權限
sudo chmod +x /usr/local/bin/docker-compose
4.查看是否安裝成功
到此為止,所有的安裝准備工作都就緒了,接下來就是工程部署了。總共安裝了如下鏡像:
十三、 后端工程發布
1、生成鏡像,准備啟動
在 src/main/ 路徑下新建 docker 文件夾,並新建 Dockerfile 文件、docker-compose.yml 文件。
2、項目打 jar 包
通過Maven 工具install 打jar 包,在對應工程的在target 目錄下得到 xxx.jar。
3、 使用 Dockerfile 制作 Docker 鏡像
注意這里的 jar 包位置。將 target 目錄下生成的 jar 包拷貝在src/main/docker 目錄下。
在 Dockerfile 中寫入以下內容:
# 基於哪個鏡像 FROM java:8 # 將本地文件夾掛載到當前容器 VOLUME /tmp # 拷貝文件到容器 ADD common-gateway-0.0.1-SNAPSHOT.jar /gateway.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/gateway.jar"] ENV TIMEZONE Asia/Shanghai
上傳到服務器對應目錄下:
到對應目錄下,執行命令:
docker build -t gateway-service:0.0.1 .
再通過 docker images 可以發現,鏡像已經存在。
現在可以去書寫 docker-compose.yml。
4、使用 docker-compose.yml 編排微服務的啟動
在 docker-compose.yml 里面寫入:
version: '3' services: gateway-service: image: gateway-service:0.0.1 ports: - 9999:9999
iamge:連接的對應的鏡像名字,必須和你生成的鏡像一模一樣,版本號也一定要加上(默認latest,因為之前我們加了0.0.1,沒有latest)
ports: 就是暴漏端口映射。保持一致,不易混淆。但是前端包要保持映射到Nginx 端口上。
執行
docker-compose up -d
-d:仍然表示后台執行
成功后docker ps查看:
訪問nacos 服務,查看服務列表,看到有一個微服務在Nacos 服務列表中:
接下來把剩下八個微服務分別按照第一個gateway 微服務的方式打包上傳到Docker 中,只build 打包,不run 啟動,打包好后通過編寫docker-compose 腳本一起啟動所有微服務。
5、工程打包
common-oauth2 打包上傳:
mng-sys 打包上傳:
mng-mall 打包上傳:
api-mall 打包上傳:
api-pay 打包上傳:
api-customer 打包上傳:
api-member 打包上傳:
api-aiot 打包上傳:
6、工程添加到容器
上傳好后分別添加到容器:
已添加第一個gateway 服務:docker build -t gateway-service:0.0.1 .
docker build -t oauth2-service:0.0.1 .
docker build -t sys-service:0.0.1 .
docker build -t api-mall-service:0.0.1 .
docker build -t api-pay-service:0.0.1 .
docker build -t api-customer-service:0.0.1 .
docker build -t api-aiot-service:0.0.1 .
docker build -t api-member-service:0.0.1 .
docker build -t mng-mall-service:0.0.1 .
docker images 查看容器中的工程:
看到這九個工程都加到docker 容器中了,但並沒有啟動,還需要編輯docker-compose.yml 編排微服務的啟動。
執行docker-compose 命令:
docker-compose up -d
多次執行該命令,有變動的工程會重新部署:
再通過docker ps -a 查看docker 容器中的運行狀態:
到nacos 服務列表下查看運行狀況:
有十個微服務只跑了九個,擔心電腦扛不住,之前用公司的電腦IDEA開超過五個微服務每次都會閃退。
心累啊,終於九個服務都跑通了:
再到ES中查看是否有索引,項目啟動會自動生成es索引和字段:
到此為止,后端服務的部署就告一段落了,接下來就是三個前端項目了。
十四、前端工程發布
1、編寫VUE 前端項目的Dockerfile
FROM nginx:latest MAINTAINER 302665496@qq.com COPY dist/ /usr/share/nginx/html/
第一行寫的是設置基礎鏡像,也就是我們剛剛pull 下來的nginx 鏡像,
第二行是寫一個作者,寫上自己的郵箱就好,
第三行的意思就是將dist 文件夾下面的內容拷貝到/usr/share/nginx/html/ 這個目錄下。
這個目錄是不是很眼熟?這個路徑就是nginx 一般的項目地址路徑。還記得nginx 的測試頁面在哪兒嗎?就是這個路徑下的index.html 啦。
2、創建鏡像
上傳dist 目錄下的static 和index.html 文件和Dockerfile 到虛擬機對應目錄
在Dockerfile 的目錄下執行
docker build -t admin-mall-vue:v1 .
admin-mall-vue:v1 是你鏡像的名字。 特別注意后頁面那個點不能省略。
然后在docker images 一下,你就能看到自己創建的VUE鏡像了。
3、創建容器
執行命令:
# -d 后台運行
# -p 端口映射
docker run -d -p 9090:80 admin-mall-vue:v1
然后執行docker ps 查看:
4、訪問測試
在內部瀏覽器訪問:
到虛擬機外部,使用ip 訪問能否正常登陸:
再試着更換圖片,看下minio 文件服務器能不能用。
后面還有兩個前端項目的部署,一個IM 客服聊天,一個手機APP商城,部署方式同后台管理vue 項目類似。3個前端工程,九個微服務的發布到此。
前面的一些步驟可以寫成腳本,比如build 裝載鏡像等。
另外兩個前端項目結構如下:
執行h5 APP前端項目的build 腳本:
執行im 客服聊天系統的build 腳本:
通過docker images 查看build 結果
執行docker-compose 運行兩個前端項目:
docker-compose up -d
docker ps -a 查看發布狀態:
使用虛擬機ip 172.16.114.135 加上端口號9091/9092 分別訪問客服IM頁面和H5商城頁面:
平生不會相思
才會相思
便害相思