A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我们以商城项目中的goods-server + mgrsite为例,使用Weave + Docker进行部署

一. 使用assembly 打包项目

由于条件限制,我们就用本机+虚拟机来模拟部署,如果是两台主机只需执行weave connect masterIp 将多个主机加入到weave网络即可

先看一下结构图

注意:
主机IP: 192.168.82.242
虚拟机IP:192.168.217.128
为了验证主机和容器之间的通信,数据库部署在本机,大家也可以直接使用容器部署mysql
zookeeper / redis 使用Docker容器部署, 并且要指定IP, 因为项目中固定了连接的IP
mgrsite 和 goods-server 的IP可以自动分配, 没有影响. 但是因为使用Dubbo, goods-server在启动时会向注册中心注册服务地址, 所以在goods-server项目中配置 spring.dubbo.protocol.host=127.0.0.1 即可不要指定其他IP

两个项目中数据库/redis/zookeeper的配置



  • #数据库连接地址



  • spring.datasource.url=jdbc:mysql://192.168.82.242:3306/wolfcode_shop_goods



  • #注册中中心



  • spring.dubbo.registry.address=zookeeper://10.32.0.8:2181



  • # Redis服务器地址



  • spring.redis.host=10.32.0.9


二. 构建镜像

为每一个项目创建Dockerfile 并执行docker build -t imageName DockerfilePath 构建出镜像: goods-server / mgrsite

Dockerfile文件内容(就只贴一个了,也就改个压缩包名字而已)



  • #Version: 1.0



  • #Author: sky <123@126.com>



  • #基础镜像



  • FROM airdock/oracle-jdk



  • #维护者信息



  • MAINTAINER SKY



  • ADD shop-goods-server.tar.gz /opt/shop



  • ##进入工作目录



  • WORKDIR /opt/shop/shop-goods-server



  • #设置容器启动时默认执行的命令



  • CMD ["bin/start.sh"]


三. 启动容器

(注意我并没有执行eval (weave env) , 所以此时docker run 启动的容器并没有自动加入weave 网络)

  • 启动redis / zookeeper并指定IP (此处我们演示weave,就不再配置数据卷之类的配置)
    docker run -d —rm —name redis redis
    docker run -d —rm —name zookeeper zookeeper #执行这两个命令之前不要执行 eval $(weave env) , 因为会自动为容器分配ip
  • 指定 redis / zookeeper 容器ip
    假设 redis 容器id : 558a zookeeper 容器id: 999a
    weave attach 10.32.0.8/12 zookeeper
    weave attach 10.32.0.9/12 redis
    指定的ip需要和项目中的配置对应
  • 将docker 命令转交weave
    eval $(weave env)
    以后使用docker启动的容器会自动加入到weave网络并分配ip
  • 启动 goods-server / mgrsite
    docker run -d —rm —name goods-server #会自动分配ip, 假设分配的ip 为10.32.0.3
    docker run -d —rm —name -p 8080:8080 mgrsite #第一次启动最好 使用-it 启动可以看到有没有报错
    特别注意mgrsite 启动的时候是映射出了8080端口的, 这样外部网络才能通过虚拟机访问到mgrsite
  • weave expose
    将虚拟机加入到weave 网络


    • 这一步并不是必须的,主要为了检查一下goods-server 服务提供有没有问题



    • 执行telnet  10.32.0.3 20880 , 如果能够连接 即为服务提供正常, 也可以执行 ls -l 查看具体服务信息


  • 访问
    在本机访问项目 :192.168.217.128:8080
    可以正常访问,说明部署成功


    • 使用weave 之后, 如果有主机要加入weave 只需 执行 weave connect mastIP 即可加入





4 个回复

倒序浏览
奈斯,优秀
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马