您的位置:首页 > 运维架构 > Docker

Spring Cloud学习:08Docker部署Spring Cloud项目

2018-01-05 00:00 706 查看
摘要: 使用docker Maven插件本地构建docker镜像发布至远程服务器

1 修改工程

使用练习1的工程进行修改

1.1修改eureka-server模块,在pom.xml文件中添加docker-maven-plugin

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>com.laravelshao.springcloud</groupId>
<artifactId>one-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>one-service</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--docker 镜像前缀-->
<docker.image.prefix>laravelshao</docker.image.prefix>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR3</spring-cloud.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker maven插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>docker</dockerDirectory>
<!--注意 修改成远程服务器地址-->
<dockerHost>http://X:X:X:X:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

</project>

1.2 修改yml配置文件

server:
port: 8761 # eureka默认端口:8761

eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: false # 是否注册到eureka
fetch-registry: false # 是否从eureka获取注册信息

1.3 在eureka-server模块下面新建docker文件夹,新建Dockerfile文件

FROM frolvlad/alpine-oraclejdk8:slim

VOLUME /opt/common

ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar

#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

EXPOSE 8761

1.4 执行构建命令

mvn clean package docker:build




1.5 同样修改one-service模块,添加docker-maven-plugin插件,修改配置文件,添加Dockerfile文件,并构建镜像

yml配置文件

server:
port: 8762

eureka:
client:
serviceUrl:
defaultZone: http://eureka-server:8761/eureka/ #host需要修改为镜像名称

spring:
application:
name: one-service #指明应用名称(服务与服务相互调用根据name属性)

Dockerfile文件

FROM frolvlad/alpine-oraclejdk8:slim

VOLUME /opt/common

ADD one-service-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

EXPOSE 8762

1.6 在远程服务器的docker仓库可以看见构建的两个镜像



1.7 启动镜像

docker run -p 8761:8761 -t laravelshao/eureka-server
docker run -p 8762:8762 -t laravelshao/one-service

发现one-service服务无法注册

解决方法:在启动服务注册中心镜像时添加name参数,启动one-service时添加link参数指向服务注册中心

docker run --name eureka-server -p 8761:8761 -t laravelshao/eureka-server
docker run --link eureka-server:eureka-server -p 8762:8762 -t laravelshao/one-service

服务注册中心存在one-service服务,说明注册成功



请求测试地址,返回测试信息



本文源码下载地址:

https://github.com/laravelshao/spring-cloud-learning/tree/master/setion08-deploy-docker

2 参考资料

史上最简单的SpringCloud教程

https://segmentfault.com/a/1190000010313412

http://www.cnblogs.com/cocoat/p/7473785.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息