分享

spring-cloud(九)项目部署[Docker]

 关平藏书 2018-01-12

当我们把每个模块的功能微服务化后,会发现项目部署工作是非常头疼的一件事情。使用docker来管理我们项目的发布将会简单很多。
(学习前提:已经安装了docker,并对docker有基本了解)

docker来部署spring-cloud项目

这篇文章就来简单介绍下使用docker来部署spring-cloud项目

本文示例代码在 spring-cloud(三)声明性REST客户端[Feign] 上进行改造。

1.在 的pom文件中增加docker的插件支持

  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>docker-maven-plugin</artifactId>
  4. <version>0.4.3</version>
  5. <configuration>
  6. <imageName>tm/${project.artifactId}</imageName>
  7. <dockerDirectory>src/main/resources/build</dockerDirectory>
  8. <resources>
  9. <resource>
  10. <targetPath>/</targetPath>
  11. <directory>${project.build.directory}</directory>
  12. <include>${project.build.finalName}.jar</include>
  13. </resource>
  14. </resources>
  15. </configuration>
  16. </plugin>

2.修改application.yml文件中的配置

  1. server:
  2. port: 8761
  3. eureka:
  4. instance:
  5. # hostname: localhost
  6. prefer-ip-address: true
  7. client:
  8. registerWithEureka: false
  9. fetchRegistry: false
  10. # serviceUrl:
  11. # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.在src/main/resources目录下创建目录build及Dockerfile文件

Dockerfile内容如下

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD tm-eureka-server-0.0.1-SNAPSHOT.jar app.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  5. EXPOSE 8761

4.执行命令mvn clean package docker:build

1.png

2.png

5.执行命令

  1. docker run --name tm-eureka-server -p 8761:8761 -t --rm tm/tm-eureka-server

3.png

4.png

到此可以看到docker已经成功的将tm-eureka-server项目部署好了。

接下来再讲讲tm-service利用docker发布,并注册到tm-eureka-server中的示例。

6.在tm-service的pom文件中引入docker插件

  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>docker-maven-plugin</artifactId>
  4. <version>0.4.3</version>
  5. <configuration>
  6. <imageName>tm/${project.artifactId}</imageName>
  7. <dockerDirectory>src/main/resources/build</dockerDirectory>
  8. <resources>
  9. <resource>
  10. <targetPath>/</targetPath>
  11. <directory>${project.build.directory}</directory>
  12. <include>${project.build.finalName}.jar</include>
  13. </resource>
  14. </resources>
  15. </configuration>
  16. </plugin>

7.修改application.yml的配置

  1. server:
  2. port: 8762
  3. spring:
  4. application:
  5. name: tm-service
  6. eureka:
  7. client:
  8. serviceUrl:
  9. defaultZone: http://tm-eureka-server:8761/eureka/

8.在src/main/resources目录下创建目录build及Dockerfile文件

Dockerfile内容如下

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD tm-service-0.0.1-SNAPSHOT.jar app.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  5. EXPOSE 8762

9.执行命令mvn clean package docker:build

5.png

6.png

10.执行启动命令

  1. docker run --name tm-service --link tm-eureka-server -p 8762:8762 -t --rm tm/tm-service

7.png

8.png

9.png

使用docker-compose编排,管理镜像

使用编排启动镜像

1.创建 docker-compose.yml 文件

  1. version: '2'
  2. services:
  3. tm-eureka-server:
  4. image: tm/tm-eureka-server
  5. restart: always
  6. ports:
  7. - 8761:8761
  8. tm-service:
  9. image: tm/tm-service
  10. restart: always
  11. ports:
  12. - 8762:8762
  13. links:
  14. - tm-eureka-server

2.执行命令

  1. docker-compose up

10.png

使用编排构建镜像并启动

1.将 tm-eureka-server 项目里的Dockerfile拷贝到更目录,并修改jar包的位置

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD ./target/tm-eureka-server-0.0.1-SNAPSHOT.jar app.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  5. EXPOSE 8761

2.将 tm-service 项目里的Dockerfile拷贝到更目录,并修改jar包的位置

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD ./target/tm-service-0.0.1-SNAPSHOT.jar app.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  5. EXPOSE 8762

3.新建 docker-compose-build.yml 文件

  1. version: '2'
  2. services:
  3. tm-eureka-server:
  4. build: tm-eureka-server
  5. tm-service:
  6. build: tm-service

4.执行命令

  1. docker-compose -f docker-compose-build.yml -f docker-compose.yml up

11.png

这种全命令行的方式来部署项目非常方便,当我们的微服务很多的时候,手动一个一个的启动很困难的一件事,一不便于运维。使用docker-compose来管理就很容易了,只需要一个命令就可以进行构建,启动,停止。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多