13.docker部署springcloud项目
来源:互联网 发布:股票实时数据api 编辑:程序博客网 时间:2024/06/15 07:52
1.介绍及准备工作
使用docker部署springcloud项目主要是使用maven-docker插件在本地将项目构建成镜像推送到指定ip的docker服务下。也可以使用dockerfile文件制作镜像这里采用maven的插件比较方便
我这里docker装在centos中,打开docker(要确保docker后台启动会监听2357端口,即首先需要打开docker的对外的api端口2357)
service docker start &
2.配置环境变量
在本地win10系统中新建系统变量指向虚拟机中的docker服务
3.erueka-server
(1)pom.xml
主要是加入maven-docker的插件的依赖
<!-- 打包工具 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- 插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.3</version> <configuration> <!-- 镜像名称 --> <imageName>eureka-server-test</imageName> <!-- 依赖java镜像 --><baseImage>java</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- 插件 --> </plugins> </build>
这里指定镜像的名称有一定规则比如大小写特殊字符等否则会失败
完整配置如下
<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.tyf</groupId> <artifactId>eureks-server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureks-server</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 1.parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> </parent> <dependencies> <!--2.eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- 3.springboot test--> <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>Dalston.RC1</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> <!-- 插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.3</version> <configuration> <!-- 镜像名称 --> <imageName>eureka-server-test</imageName> <!-- 依赖java镜像 --><baseImage>java</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- 插件 --> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories></project>
(2)application.yml
去掉hostname去掉serviceUrl.defaultZone的配置
增加instance.prefer-ip-address的配置
server: port: 8761eureka: instance: preferIpAddress: true #hostname: localhost client: registerWithEureka: false fetchRegistry: false #serviceUrl.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
(3)app
不变
package com.tyf.register;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); }}
(4).构建镜像
首先将修改后的工程在本地跑一下看能不能跑通
然后将项目文件从eclipse的workspace中cp粗来放到任意一个位置,进入项目文件夹(包含pom.xml这一层目录)
mvn clean package docker:build等待完成,到centos的docker服务中查看刚刚推送进去的镜像信息
docker images启动镜像,将容器运行8761端口映射到宿主机8761端口(同时指定容器name为eureka-server)
docker run --name eureka-server -p 8761: 8761 -t eureka-server-test使用宿主机ip和端口访问项目(http://192.168.88.131:8761)可以看到web窗口
成功!
4.provider-server
创建一个服务提供者(使用eureka-server暴露服务)
(1)pom.xml
主要是加入maven-docker插件
<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.tyf</groupId> <artifactId>provider-server-test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>provider-server-test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 1.parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> </parent> <dependencies> <!--2.eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency><!----><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 3.springboot test--> <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>Dalston.RC1</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> <!-- 插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.3</version> <configuration> <!-- 镜像名称 --> <imageName>provider-server-test</imageName> <!-- 依赖java镜像 --><baseImage>java</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- 插件 --> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories></project>(2)application.properties
eureka: client: serviceUrl: #defaultZone: http://localhost:8761/eureka/ http://eureka-server:8761/eureka/ #这里填写eureka-server-test镜像启动的容器的名称server: port: 8763spring: application: name: provider-server(3)其他
app/controller/service不变
(4)构建镜像
过程同上
先访问eureka-server的窗口查看服务是否成功注册,在访问服务提供者(通过erueka-server的ip调用)查看服务能否调用
一方面查看浏览器页面的response结果.另一方面进入docker服务下面运行的镜像的容器中可以查看到控制台的输出信息
5.遇到的一些错误
类中import的一些没有使用的包会在build过程中报错
images名字有一定的规则
在启动erueka-server-test时指定name参数为eureka-server-test,这个值就是配置在provide-server中的注册中心地址,在这里表现为一个hostname
再启动provider-server-test时使用link参数命令如下
两个服务安装在同一centos的docker中:
docker run --name eureka-server-test -p 8761:8761 -t eureka-server-test
docker run --link eureka-server-test:8761 -p 8763:8763 -t provider-server-test
docker run --link eureka-server-test:8761 -p 8763:8763 -t provider-server-test
两个服务安装在不同centos的docker中
服务提供者,即client的application.yml中defaultZone直接填http://注册中心主机ip:端口号/eureka:
docker run -p 8761:8761 -t eureka-server 启动服务器
docker run -p 8763: 8763 -t server-hi 注册服务
docker run -p 8761:8761 -t eureka-server 启动服务器
docker run -p 8763: 8763 -t server-hi 注册服务
阅读全文
0 0
- 13.docker部署springcloud项目
- SpringCloud: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- springcloud项目(eureka服务发现+zuul网关)部署至docker中tomcat
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- SpringCloud(第 053 篇)CentOS7 中用 Docker 部署一个简单的基于 Eureka 服务治理发现的项目
- Docker 部署 tomcat 项目
- docker项目开发部署
- 将springcloud服务通过docker部署到linux服务器上
- 【Docker】在Docker中部署tornado项目
- Docker部署JavaWeb项目实战
- Docker部署JavaWeb项目实战
- 使用Docker部署Tomcat项目
- http://studyai.com/
- Java设计模式简介
- curl 工具使用
- 递归和回溯
- mysql分区类型及操作
- 13.docker部署springcloud项目
- 生活小记66
- hihoCoder1341
- POJ 3322 Bloxore I
- PAT 1008 数组元素循环右移问题
- 自动补全不算什么,一键直达目录才是终极神器
- Python操作分布式流处理系统Kafka
- DO VO PO DTO
- uboot移植i2c