Docker部署SpringCloud项目

一、简介

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

主要涉及到的服务有:

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

二、部署Eureka服务

【a】 拉取java8镜像

docker pull java:8u11
docker images

Docker部署SpringCloud项目_第1张图片

【b】创建目录

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

Docker部署SpringCloud项目_第2张图片

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

Docker部署SpringCloud项目_第3张图片

 

Docker部署SpringCloud项目_第4张图片

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

Docker部署SpringCloud项目_第5张图片

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

Docker部署SpringCloud项目_第6张图片

【e】创建Dockerfile文件

vim Dockerfile

Docker部署SpringCloud项目_第7张图片

具体内容如下:

FROM java:8u111
MAINTAINER [email protected]
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"]

Docker部署SpringCloud项目_第8张图片

【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 .

Docker部署SpringCloud项目_第9张图片

【h】查看构建好的镜像

docker images;

Docker部署SpringCloud项目_第10张图片

 【i】运行镜像容器实例

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

Docker部署SpringCloud项目_第11张图片

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

Docker部署SpringCloud项目_第12张图片

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

三、部署config-server配置服务

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

【a】首先,我们需要修改config-server服务的配置文件,将一些参数设置为可动态配置的。 Docker部署SpringCloud项目_第13张图片

【b】使用maven打包jar包

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

Docker部署SpringCloud项目_第14张图片

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

Docker部署SpringCloud项目_第15张图片

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

FROM java:8u111
MAINTAINER [email protected]
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"]

Docker部署SpringCloud项目_第16张图片

【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 .

Docker部署SpringCloud项目_第17张图片

【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

查看日志:

Docker部署SpringCloud项目_第18张图片

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

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

Docker部署SpringCloud项目_第19张图片

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

Docker部署SpringCloud项目_第20张图片

四、部署其他相关服务

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

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

【a】bootstrap.yml配置文件

Docker部署SpringCloud项目_第21张图片

【b】创建相关目录

mkdir api-gateway
cd /api-gateway

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

Docker部署SpringCloud项目_第22张图片

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

FROM java:8u111
MAINTAINER [email protected]
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"]

Docker部署SpringCloud项目_第23张图片

【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 .

Docker部署SpringCloud项目_第24张图片

【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 

启动日志:

Docker部署SpringCloud项目_第25张图片

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

Docker部署SpringCloud项目_第26张图片

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

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

【a】bootstrap.yml配置文件

Docker部署SpringCloud项目_第27张图片

【b】创建对应的目录

Docker部署SpringCloud项目_第28张图片

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

Docker部署SpringCloud项目_第29张图片

【d】创建Dockerfile

FROM java:8u111
MAINTAINER [email protected]
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 .

Docker部署SpringCloud项目_第30张图片

【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

启动日志:

Docker部署SpringCloud项目_第31张图片

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

Docker部署SpringCloud项目_第32张图片

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

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

【a】bootstrap.yml配置文件

 Docker部署SpringCloud项目_第33张图片

【b】打包jar

Docker部署SpringCloud项目_第34张图片

【c】上传jar到服务器中

Docker部署SpringCloud项目_第35张图片

【d】创建Dockerfile

FROM java:8u111
MAINTAINER [email protected]
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"]

Docker部署SpringCloud项目_第36张图片

【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 .

Docker部署SpringCloud项目_第37张图片

【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

启动日志:

Docker部署SpringCloud项目_第38张图片

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

Docker部署SpringCloud项目_第39张图片

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

五、测试

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

 Docker部署SpringCloud项目_第40张图片

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

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

 访问结果:

Docker部署SpringCloud项目_第41张图片

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

五、总结

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

你可能感兴趣的:(Docker)