Docker部署SpringCloud项目

一、简介

本篇文章将总结如何使用Docker部署SpingCloud项目,这里的内容也是之前学习Docker时候自己花了不少时间一点一点摸索出来的,小伙伴们可以参考着自己操作一遍,期间肯定会踩坑,然后一个一个解决就学会了。

主要涉及到的服务有:

  • Eureka服务注册和发现;
  • Config配置中心;
  • api-gateway网关服务;
  • punishment-service服务;
  • student-service服务;

二、部署Eureka服务

【a】 拉取java8镜像

docker pull java:8u11
docker images

【b】创建目录

sudo mkdir -p /myapp/eurekaserver
cd /myapp/eurekaserver/

 【c】使用maven插件将项目打包成jar包

 

打包完成后,在项目根目录下target目录将刚刚打包的jar包拷贝到桌面备用,以此类推,将其他服务的jar也准备好. 如下图:

【d】将jar包上传到/myapp/eurekaserver目录中,使用xftp6将本地文件上传到服务器中内

【e】创建Dockerfile文件

vim Dockerfile

具体内容如下:

FROM java:8u111
MAINTAINER weixiaohuai@docker.com
COPY ./eureka-server-0.0.1-SNAPSHOT.jar /eureka-server/eureka-server-0.0.1-SNAPSHOT.jar
COPY ./appstartup.sh  /
RUN  chmod +x /appstartup.sh
EXPOSE 1111
ENTRYPOINT ["/appstartup.sh"]

【f】创建可执行shell脚本appstartup.sh

vim appstartup.sh

输入执行脚本的内容:

#!/bin/bash
java -jar  /eureka-server/eureka-server-0.0.1-SNAPSHOT.jar

【g】构建镜像

docker build -f ./Dockerfile -t eureka-server:1.0.0 .

【h】查看构建好的镜像

docker images;

 【i】运行镜像容器实例

docker run --name eureka-server -p 1111:1111 eureka-server:1.0.0

【j】浏览器访问:http://192.168.72.128:1111/

可以看到成功运行了eurekaserver服务注册中心服务。

三、部署config-server配置服务

总体步骤跟上面部署服务注册中心的类似。

【a】首先,我们需要修改config-server服务的配置文件,将一些参数设置为可动态配置的。 

【b】使用maven打包jar包

【c】在/myapp下新建configserver目录

进入configserver目录,拷贝打包之后的jar包进去。

【d】创建Dockerfile,具体文件内容:

FROM java:8u111
MAINTAINER weixiaohuai@docker.com
COPY ./config-server-0.0.1-SNAPSHOT.jar /config-server/config-server-0.0.1-SNAPSHOT.jar
COPY ./appstartup.sh  /
RUN  chmod +x /appstartup.sh
ENTRYPOINT ["/appstartup.sh"]

【e】创建可执行脚本appstartup.sh

#!/bin/bash
java -jar -Dport=$PORT -DgitRepositoryUrl=$GIT_URL -DeurekaServerUrl=$EUREKA_SERVER_URL -DipAddress=$IPADDRESS  /config-server/config-server-0.0.1-SNAPSHOT.jar

【f】构建镜像

docker build -f ./Dockerfile -t config-server:1.0.0 .

【g】运行容器

docker run --name config-server  -p 4444:4444  -e PORT=4444 -e GIT_URL=https://gitee.com/weixiaohuai/config-server.git  -e EUREKA_SERVER_URL=http://192.168.72.128:1111/eureka/  -e IPADDRESS=192.168.72.128 config-server:1.0.0

查看日志:

可见,配置服务也运行成功.

【h】浏览器访问http://192.168.72.128:1111/

可见config-server已经成功注册到服务注册中心。然后浏览器访问http://192.168.72.128:4444/apigateway-dev.yml,可见配置中心已经成功部署。

四、部署其他相关服务

以相同的方式部署api-gateway网关服务、punishment-service服务、student-service服务。

(1)、部署api-gateway网关服务

【a】bootstrap.yml配置文件

【b】创建相关目录

mkdir api-gateway
cd /api-gateway

【c】将jar传输到服务器对应的目录

【d】创建Dockerfile,文件内容如下

FROM java:8u111
MAINTAINER weixiaohuai@docker.com
COPY ./api-gateway-0.0.1-SNAPSHOT.jar /api-gateway/api-gateway-0.0.1-SNAPSHOT.jar
COPY ./appstartup.sh  /
RUN  chmod +x /appstartup.sh
ENTRYPOINT ["/appstartup.sh"]

【e】创建启动脚本appstartup.sh

#!/bin/bash
java -jar -Dport=$PORT -DeurekaServerUrl=$EUREKA_SERVER_URL -DipAddress=$IPADDRESS  /api-gateway/api-gateway-0.0.1-SNAPSHOT.jar

【f】构建对应的镜像

docker build -f ./Dockerfile -t api-gateway:1.0.0 .

【g】运行对应的镜像

docker run --name api-gateway  -p 5555:5555 -e PORT=5555 -e EUREKA_SERVER_URL=http://192.168.72.128:1111/eureka/  -e IPADDRESS=192.168.72.128 api-gateway:1.0.0 

启动日志:

【h】访问Eureka服务注册中心http://192.168.72.128:1111/

可见,网关服务也成功注册到Eureka上。

(2)、部署pinishment-service业务服务

【a】bootstrap.yml配置文件

【b】创建对应的目录

【c】将对应的jar传输到服务器对应目录中

【d】创建Dockerfile

FROM java:8u111
MAINTAINER weixiaohuai@docker.com
COPY ./punishment-service-0.0.1-SNAPSHOT.jar /punishment-service/punishment-service-0.0.1-SNAPSHOT.jar
COPY ./appstartup.sh  /
RUN  chmod +x /appstartup.sh
ENTRYPOINT ["/appstartup.sh"]

【e】创建启动脚本appstartup.sh

#!/bin/bash
java -jar -Dport=$PORT -DeurekaServerUrl=$EUREKA_SERVER_URL -DipAddress=$IPADDRESS  /punishment-service/punishment-service-0.0.1-SNAPSHOT.jar

【f】构建镜像

docker build -f ./Dockerfile -t punishment-service:1.0.0 .

【g】运行容器

docker run --name punishment-service  -p 2222:2222 -e PORT=2222 -e EUREKA_SERVER_URL=http://192.168.72.128:1111/eureka/ -e IPADDRESS=192.168.72.128 punishment-service:1.0.0

启动日志:

访问 Eureka服务注册中心:http://192.168.72.128:1111/,如下图:

可见,punishmentService也成功注册到Eureka中。

(3)、部署student-service业务服务

【a】bootstrap.yml配置文件

 

【b】打包jar

【c】上传jar到服务器中

【d】创建Dockerfile

FROM java:8u111
MAINTAINER weixiaohuai@docker.com
COPY ./student-service-0.0.1-SNAPSHOT.jar /student-service/student-service-0.0.1-SNAPSHOT.jar
COPY ./appstartup.sh  /
RUN  chmod +x /appstartup.sh
ENTRYPOINT ["/appstartup.sh"]

【e】创建启动脚本appstartup.sh

#!/bin/bash
java -jar -Dport=$PORT -DeurekaServerUrl=$EUREKA_SERVER_URL  -DipAddress=$IPADDRESS  /student-service/student-service-0.0.1-SNAPSHOT.jar

【f】构建镜像

docker build -f ./Dockerfile -t student-service:1.0.0 .

【g】运行容器

docker run --name student-service  -p 3333:3333 -e PORT=3333 -e EUREKA_SERVER_URL=http://192.168.72.128:1111/eureka/ -e IPADDRESS=192.168.72.128 student-service:1.0.0

启动日志:

访问 Eureka服务注册中心:http://192.168.72.128:1111/,如下图:

可见,student-service对外提供服务的服务也成功注册上Eureka。

五、测试

至此,五个相关的服务都部署成功了,所有服务都成功注册上Eureka中,如下图:

 

下面我们进行测试,浏览器访问, 

http://192.168.72.128:5555/punishment/getViolationDetail/1

访问结果:

可见,接口通过网关请求转发到后端具体的服务中,并且请求时成功的。

接着我们尝试直接请求对应后端接口:

http://192.168.72.128:2222/getViolationDetail/1

访问结果:

 可见,直接访问后端服务也是调用成功的。然后我们继续访问:

http://192.168.72.128:3333/getStudentDetail/1

 访问结果:

可见,studentService调用接口也是成功的,自此我们通过Docker部署了一个比较简单的SpringCloud微服务环境,实际项目中大体流程也是类似的。

五、总结

本文是之前笔者学习Docker时弄的一个小练习,小伙伴们一定要亲自自己动手去实现,期间肯定会遇到很多问题,就像笔者一样,当时遇到很多问题,但都一个一个解决完了,最终才成功的,这个小案例能有效地加深我们对Docker知识的应用和实践。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值