SpringCloud完整微服务项目构建:(二)使用Docker部署EurekaServer

导语

使用Docker自动化部署EurekaServer,其中涉及maven项目搭建,git版本提交,Dockerfile构建EurekaServer,使用GitlabCI进行自动化部署。

Maven工程

父工程Smart-Cloud

创建父类工程Smart-Cloud,Pom文件如下:

<?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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
		<relativePath />
	</parent>
	<groupId>com.hyn</groupId>
	<artifactId>smart-cloud</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>smart-cloud</name>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-bean-validators -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-bean-validators</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.59</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	<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>
	<modules>
		<module>cloud-eureka</module>
	</modules>
</project>

子工程smart-cloud

pom文件如下:

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.hyn</groupId>
		<artifactId>smart-cloud</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>cloud-eureka</artifactId>
	<name>cloud-eureka</name>
	<packaging>jar</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>
	</dependencies>
	<build>
		<finalName>cloud-eureka</finalName>
	</build>
</project>

EurekaServer配置文件application.yml

server: 
  port: 8761
eureka: 
  instance: 
    hostname: localhost 
  client: 
    registerWithEureka: false
    fetchRegistry: false
  server: 
    enable-self-preservation : false 
    eviction-interval-timer-in-ms : 2000 
spring: 
  application: 
    name: cloud-eureka

启动类:

package com.hyn.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringCloudApplication
@EnableEurekaServer
public class SmartEurekaApplication {
	public static void main(String[] args) {
		SpringApplication.run(SmartEurekaApplication.class, args);
	}
}

Gitlab创建仓库

在这里插入图片描述
在项目中选择
在这里插入图片描述
配置gitlab-ci,配置方法点进去官网有说明,很简单。我们这里选择shell编排。
点击添加
在这里插入图片描述
添加.gitlab-ci.yml配置文件,这脚本写的有些low,后面会优化

# define job variables at job level
variables:
  #设置maven环境变量
  MAVEN_CLI_OPTS: "-s /usr/apache-maven-3.6.1/conf/settings.xml --batch-mode"
  #设置maven仓库位置
  MAVEN_OPTS: "-Dmaven.repo.local=/usr/MyRepository"
  #设置项目版本号
  CLOUD_VERSION: "0.0.1-SNAPSHOT"
  #设置仓库位置
  CLOUD_RESPOSITORY: "/usr/MyRepository/"

  #设置cp到项目的路径
  JAR_HOME_PATH: "/home/cloud/smart-cloud/"
  #设置项目名称
  CLOUD_EUREKA: "cloud-eureka"
  #设置docker仓库地址
  DOCKER_RESPOSITORY: "192.168.43.128:5000"
  
  
stages:
 - build
 - test
 - deploy

job1:
   stage: build
   tags: 
     - smart-cloud
   script: 
     - whoami
     - echo "start build"
     - echo "进行编译...."
     - mvn clean install -Dmaven.test.skip=true
     - echo "end build"

     
job2:
  stage: test
  tags: 
    - smart-cloud
  script: 
    - echo "start test"
    - echo "这里做一些测试的事情,如果没有就不做了。"
    - echo "end test"
    
job3:
  stage: deploy
  tags: 
    - smart-cloud
  script: 
    - pwd
    - echo $CLOUD_RESPOSITORY
    - echo pwd
    - echo "--------------------------------start eureka-----------------------------------------------"
    - echo "创建eureka工程目录"
    - mkdir -p $JAR_HOME_PATH/$CLOUD_EUREKA/
    - echo "复制jar到工程目录"
    - cp $CLOUD_RESPOSITORY/com/hyn/$CLOUD_EUREKA/$CLOUD_VERSION/$CLOUD_EUREKA-$CLOUD_VERSION.jar $JAR_HOME_PATH/$CLOUD_EUREKA/
    - cp cloud-eureka/Dockerfile $JAR_HOME_PATH/$CLOUD_EUREKA/
    - echo "docker build"
    - docker build -t $DOCKER_RESPOSITORY/smartcloud/cloud-eureka $JAR_HOME_PATH/$CLOUD_EUREKA/
    - docker push $DOCKER_RESPOSITORY/smartcloud/cloud-eureka
    - echo "--------------------------------end eureka-------------------------------------------------"

创建本地Docker仓库

转:docker学习之搭建自己的本地镜像仓库

安装Rancher

sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable

官网文档:Rancher 1.6 Docs

创建应用服务

在这里插入图片描述
在这里插入图片描述
注意:选择的镜像需要和本地仓库能对应

执行持续集成

在这里插入图片描述
可以发现会有几个任务:
在这里插入图片描述
可以看到一些执行的日志:
在这里插入图片描述
在这里插入图片描述
这样的话就像Eureka的docker打到本地仓库了,然后使用Rancher启动。

启动容器

在这里插入图片描述
启动成功:
在这里插入图片描述


版权声明:本文为baidu_37307156原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。