• 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
    这里点击两次,收到了两个进程发送过来的消息。

  • 相关阅读:
    部署iis服务器与c#程序遇到的问题小结
    Installing node-oracledb on Microsoft Windows
    Navicat:cant create OCI environment.
    socket.io 中文手册 socket.io 中文文档
    现有的情绪
    Express 4.x Node.js的Web框架
    结构与类的对象在引用上的不同之处
    Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
    ASP.NET MVC4中调用WEB API的四个方法
    安恒DASCTF 四月战 WP
  • 原文地址:https://www.cnblogs.com/yiweiblog/p/12652563.html
走看看 - 开发者的网上家园