zoukankan      html  css  js  c++  java
  • 将SpringCloud Eureka 服务注册与发现部署到docker

    一、前言

             最近在学习docker,顺便把之前学习的spring cloud 部署到Docker 中。至于什么是SpringCloud的服务注册与发现,什么是docker,我这里就不作赘述了。可以先去学习这两部分内容,再来看这篇文章,废话不多说了。直接开始!


    二、环境准备
            JDK 8
            MAVEN 3.3.9
    SpringCloud Dalston.SR4
    SpringBoot 1.5.8.RELEASE
           
    三、实战eureka-server
        3.1 创建工程
          跟普通创建eurkea-server 工程一样,如下图所示:

         



                                                                                                      目录结构图

        
        3.2 pom.xml

        <?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.eureka-server</groupId>
            <artifactId>101spring-cloud-eureka-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <packaging>jar</packaging>
         
            <name>101spring-cloud-eureka-server</name>
            <description>Demo project for Spring Boot</description>
         
            <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.5.8.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>
                <java.version>1.8</java.version>
                <spring-cloud.version>Dalston.SR4</spring-cloud.version>
            </properties>
         
            <dependencies>
                <dependency>    
                    <groupId>org.springframework.boot</groupId>    
                    <artifactId>spring-boot-starter-security</artifactId>    
                </dependency>
         
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-eureka-server</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>
                <finalName>eureka-server</finalName>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                    </plugin>
                    <!-- tag::plugin[] -->
                    <!-- <plugin>
                        <groupId>com.spotify</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.4.3</version>
                        <configuration>
                            <imageName>${docker.image.prefix}/test/${project.artifactId}</imageName>
                            <dockerDirectory>src/main/docker</dockerDirectory>
                            <resources>
                                <resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}</directory>
                                    <include>${project.build.finalName}.jar</include>
                                </resource>
                            </resources>
                        </configuration>
                    </plugin> -->
                    <!-- end::plugin[] -->
                </plugins>
            </build>
         
         
        </project>



          这里暂时不用Docker 插件演示,加入了eureka安全验证,所以引入了security依赖。

      3.3 application.yml

        spring:
          application:
            name: eureka-server
        server:
          port: 8761
        #安全认证配置
        security:    
          basic:    
            enabled: true    
          user:    
            name: admin  # 用户名    
            password: admin123   # 用户密码  
        eureka:
          client:
            register-with-eureka: false
            fetch-registry: false



    启动项目测试是否成功。



    启动成功!说明我们的项目正常运行没有问题!

    四、实战 eureka-client

    创建eureka-client步骤跟创建eureka-server 一样,只是注意一些细节。

    4.1 application.yml

     

      spring:
          application:
            name: eureka-client
        server:
          port: 8750
        eureka:  
          instance:  
            prefer-ip-address: true
          client:
            serviceUrl:
              defaultZone: http://admin:admin123@localhost:8761/eureka/



    因为eureka-server 加入了安全验证,所以客户端注册地址:

    http://admin:admin123@localhost:8761/eureka/




    如上图所示,说明客户端注册成功。整体流程没问题!接下来部署到docker 中。

    五、实战 docker

    这里我的docker 搭建在VM虚拟机CentOS7系统中。我安装的docker 版本是目前最新的17ce社区版网上有许多搭建教程,这里我就不啰嗦了。

    5.1 打成Jar包
    将 eureka-server 和 eureka-client 通过 maven 命令打成 jar 包

    右键=> Run As => Maven build => package 然后运行。



    这里我们看到已经打包成功了。刷新一下target 目录,可以看到已经打包好的eureka-server

     





    eureka-client 也跟eureka-server 一样。不过需要对application.yml 进行修改

      需要将localhost 修改为eureka-server


    5.2 制作docker 镜像
    这里我通过远程连接工具把jar上传至linux 操作系统中。


     



    编写dockerfile

     

       FROM frolvlad/alpine-oraclejdk8:slim
        VOLUME /tmp
        ADD ./eureka-server.jar app.jar
        #RUN bash -c 'touch /app.jar'
        ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
        EXPOSE 8761



    通过dockerfile 创建镜像文件

    命令 

    docker build -t 10.0.233.4/eureka-server .   



    注:因为搭建了Harbor镜像私服,所以取名为10.0.233.4/eureka-server

           .  表示本目录,不可以少。



    镜像打包成功,我们修改一下dockerfile 继续上传eureka-client



    5.3 运行 docker 镜像

      到了最关键的一步了。

      分别运行:

    docker run --name eureka-server -p 8761:8761 -t 10.0.233.4/eureka-server
    
    docker run --link eureka-server:8761 -p 8750:8750 -t 10.0.233.4/eureka-client





    这时候我们可以看到已经实现了在docker 容器中的部署。完!

  • 相关阅读:
    简单区分Vmware的三种网络连接模式(bridged、NAT、host-only)
    linux创建账户并自动生成主目录和主目录下的文件
    EF 通用数据层类
    html在线美化网站
    图片在页面中居中显示
    __dopostback的用法
    rdlc报表集锦
    .NET开源免费的功能强大控件库
    使用webclient上传下载实例
    消息队列将并发变串行
  • 原文地址:https://www.cnblogs.com/xiaojf/p/11753189.html
Copyright © 2011-2022 走看看