Docker部署nginx+springboot-web項目


拉取mysql

docker pull mysql

拉取nginx

docker pull nginx

更改web數據源

 url: jdbc:mysql://business-db:3306/business?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true

注意:此處使用即將定義的mysql容器名代替ip+端口號

打包web項目

在項目根目錄下執行mvn clean package進行打包(在項目target目錄下生成business-0.0.1-SNAPSHOT.jar)
項目結構.png

上傳至安裝docker的linux虛擬機

  • 在linux的/usr/local目錄下創建business文件夾
  • 使用sftp將上面的jar包上傳至此文件夾

構建Dockerfile

  • business文件下下創建Dokerfile文件, 命令:vi Dokerfile,內容如下
    Dockerfile.png

構建Docker鏡像

  • /usr/local/business目錄下執行docker build -t business-image .,使用docker images查看,生成名為business-image的鏡像

准備nginx配置文件

  • /usr/local/business下新建名為nginx的文件夾
  • /usr/local/business/nginx下創建nginx.conf文件,寫入內容如下
    nginx.conf

創建網絡

執行docker network create --subnet=172.18.0.0/16 business-net 子網為172.18.0.0/16網絡

創建mysql掛載卷持久化mysql數據

docker volume create business-volume

創建mysql容器指定網絡與ip

docker run -d --name business-db -v business-volume:/var/lib/mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456 --net=business-net --ip 172.18.0.2 mysql
這里的容器名就是第三步數據源中的配置

創建數據庫 business

搭建服務集群

[root@localhost business]# docker run -d --name business-service1 -p 8081:8080  --net=business-net --ip 171.18.0.3 business-image
4ffc98a8c73a4a7afe3737a8ace18d4d053cf8573ab61179963942f3b01104cb
[root@localhost business]# docker run -d --name business-service1 -p 8082:8080  --net=business-net --ip 172.18.0.4 business-image
a01e3613ac2a9e995fad644c29a5fd991e762008ff0dc8a3e5b1ab2e86d52924
[root@localhost business]# docker run -d --name business-service1 -p 8083:8080  --net=business-net --ip 172.18.0.5 business-image
9dc0ba15542ed29501a0d8540f0f226814e29ffb93c9ab9e06461c01b9f7c049

這里的容器名即為nginx upstream中指定的容器名

創建nginx容器

[root@localhost nginx]# docker run -d --name business-nginx -p 80:80 -v /usr/local/business/nginx/nginx.conf:/etc/nginx/ningx.conf --network=business-net --ip 172.18.0.6 nginx
60fc13c1a8d425263d6a90eb34a309ad5e5d3d5517598b8026d7326e9925b9f7

查看宿主機IP地址

因為我們的主機無法直接通過ip+port訪問容器的服務,但是我們可以通過創建容器時映射到宿主機的端口號進行訪問服務。這里我們配置了nginx反向代理,所以我們訪問宿主機+nginx端口號就可以訪問提供的服務了。這里我們通過ip addr命令查看虛擬機ip地址,我的是10.10.10.202

消費服務

瀏覽器輸入10.10.10.202/users回車,得到下面的效果。服務1.png
服務2.png
這里點擊兩次,收到了兩個進程發送過來的消息。


免責聲明!

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



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