spring-cloud项目打包成docker镜像并启动,安装docker-compose并进行服务编排

将spring-cloud项目打包成docker镜像并启动

  1. 项目地址

  2. 步骤

    • pom.xml 里面加入如下配置:

      
          <build>
              <finalName>spring-cloud-eureka-server01-service</finalName>
              
              <plugins>
                  <plugin>
                      <groupId>com.spotify</groupId>
                      <artifactId>docker-maven-plugin</artifactId>
                      <version>0.4.13</version>
                      <configuration>
                          <!-- leegoo0820/spring-cloud-eureka-server01-service(name):0.0.1(tag)-->
                          <imageName>leegoo0820/spring-cloud-eureka-server01-service:0.0.1</imageName>
                          <!-- 基础镜像 -->
                          <baseImage>java</baseImage>
                          <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                          <resources>
                              <resource>
                                  <targetPath>/</targetPath>
                                  <!-- 目录地址,也就是target生成的地址 -->
                                  <directory>${project.build.directory}</directory>
                                  <!--需要复制的jar包 -->
                                  <include>${project.build.finalName}.jar</include>
                              </resource>
                          </resources>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      
    • 将项目文件传到linux 服务器:

    • 使用maven命令进行打包(需要提前配置maven(3.5版本已经失效,需要自己去apache官网查看最新的下载地址) 环境,和java环境才能进行打包):

      mvn clean package docker:build
      
    • 然后使用docker images 会看到 spring-cloud-eureka-server01-service 镜像

    • 随后启动

      [root@localhost spring-cloud-eureka-server]# docker run -p 8761:8761 --name my_eureka leegoo0820/spring-cloud-eureka-server01-service:0.0.1
      
    • 如果希望只执行maven clean package 达到 mvn clean package docker:build的效果 ,那么可以在pom.xml文件里面增加如下配置,简单理解为就是配置了execution后,会执行对应的命令,当前命令是build

       <build>
              <finalName>spring-cloud-eureka-server01-service</finalName>
      
              <plugins>
                  <plugin>
                      <groupId>com.spotify</groupId>
                      <artifactId>docker-maven-plugin</artifactId>
                      <version>0.4.13</version>
      				
                      <!-- 新加部分开始 -->
                      <executions>
                          <execution>
                              <id>build-images</id>
                              <phase>package</phase>
                              <goals>
                                  <goal>build</goal>
                              </goals>
                          </execution>
                      </executions>
                       <!-- 新加部分结束 -->
      
                      <configuration>
                          <!-- leegoo0820/spring-cloud-eureka-server01-service(name):0.0.1(tag)-->
                          <imageName>leegoo0820/spring-cloud-eureka-server01-service:0.0.1</imageName>
                          <!-- 基础镜像 -->
                          <baseImage>java</baseImage>
                          <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                          <resources>
                              <resource>
                                  <targetPath>/</targetPath>
                                  <!-- 目录地址,也就是target生成的地址 -->
                                  <directory>${project.build.directory}</directory>
                                  <!--需要复制的jar包 -->
                                  <include>${project.build.finalName}.jar</include>
                              </resource>
                          </resources>
                      </configuration>
                  </plugin>
      
              </plugins>
          </build>
      

安装docker-compose(linux)

  1. 安装docker-compose(linux)

    • 下载docker-compose (前提必须有docker)
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    
    • 授权docker-compose

      sudo chmod +x /usr/local/bin/docker-compose
      
      
    • 建立软链接(类似于在path 增加了docker-compose)

      sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
      
    • 检查是否安装完成

      [root@localhost my_files]# docker-compose --version
      docker-compose version 1.24.0, build 0aa59064
      
    • 增加docker-compose自动补全功能 (Place the completion script in /etc/bash_completion.d/)

       sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
      
      

使用docker-compose 进行服务编排

    • 首先在项目下创建docker-compose.yml文件, 比如我的项目名是 spring-cloud-eureka-server ,那么就是spring-cloud-eureka-server/docker-compose.yml

    • 编辑docker-compose.yml内容

      version: "2"
      
      services:
        eurela:
          image: spring-cloud-eureka-server_eurela
          volumes:  #挂载目录
            - "/usr/tmp/data/eureka"
          container_name: spring-cloud-eureka-server_eurela
          build: .  #找Dockerfile文件位置,  .代表当前文件下的Dockerfile文件
          ports:  #开放端口
            - "8767:8761"
      
    • 将项目传入到linux 服务器,随后到达项目的目录下 ,执行docker-compose命令

      docker-compose up  -d
      #-d 后台运行
      #如果要删除刚运行的容器
      # docker-compose stop   项目名 没有的话默认停止所有
      # docker-compose rm    项目名 没有的话默认删除所有
      

使用docker-compose 同时部署多个docker 应用

  1. 使用docker-compose 同时部署多个docker 应用
  • 修改spring-cloud-eureka-client01pom.xml配置,加入如下内容 链接:

  • 修改spring-cloud-eureka-server01中的 pom.xml,加入如下内容 链接,

  • 修改spring-cloud-eureka-server02中的 pom.xml.加入如下内容 链接,

    
        <build>
            <plugins>
    
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.4.13</version>
    
                    <configuration>
                        <!-- leegoo0820/spring-cloud-eureka-server01-service(name):0.0.1(tag)-->
                        <imageName>leegoo0820/${project.artifactId}:${project.version}</imageName>
                        <forceTags>true</forceTags>
                        <!-- 基础镜像 -->
                        <baseImage>java</baseImage>
                        <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <!-- 目录地址,也就是target生成的地址 -->
                                <directory>${project.build.directory}</directory>
                                <!--需要复制的jar包 -->
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    
    
  • 修改 spring-cloud-eureka-client01application.yml配置

  • 修改 spring-cloud-eureka-server01中application.yml`配置

  • 修改 spring-cloud-eureka-server02application.yml配置

    eureka:
      client:
        service-url:
        	#此处新加配置 ,因为docker 中使用localhost是不能找到eureka服务器的,宿主机都是单独的ip段 
        	#client 需要绑定多个eureka
        	#但是servier01 和但是servier02 只需要对方的 服务编排 "名字"即可,下方会增加服务编排 spring-cloud-eureka-server01 和 spring-cloud-eureka-server02配置
          defaultZone: http://spring-cloud-eureka-server01:8761/eureka/,http://spring-cloud-eureka-server02:8761/eureka/
      instance:
        prefer-ip-address: true  #ip注册
    
  • 增加docker-compose.yml ,内容如下,直达链接

    version: "2"
    
    services:
      #此处就是服务编排的名称
      spring-cloud-eureka-server01:
        #image: 此处指定生成的image ,如果没有的话可能会去docker.io下载
        image: leegoo0820/spring-cloud-eureka-server01-service:0.0.1-SNAPSHOT
        volumes:  #挂载目录
          - "/usr/tmp/data/spring-cloud-eureka-server01"
        container_name: spring-cloud-eureka-server_eureka01
        build: .
        ports:  #开放端口
          - "8761:8761"
        #links:
        #  - spring-cloud-eureka-server02:discovery
        #environment:  设置环境参数
        #  - spring.profile.active=dev
    
      spring-cloud-eureka-server02:
        #image: java 指定镜像名或者id,没有就会下载
        image: leegoo0820/spring-cloud-eureka-server02-service:0.0.1-SNAPSHOT
        volumes:  #挂载目录
          - "/usr/tmp/data/spring-cloud-eureka-server02"
        container_name: spring-cloud-eureka-server_eureka02
        build: .
        ports:  #开放端口
          - "8762:8762"
    
      spring-cloud-eureka-client01:
        image: leegoo0820/spring-cloud-eureka-client01:0.0.1-SNAPSHOT
        volumes:  #挂载目录
          - "/usr/tmp/data/spring-cloud-eureka-client01"
        container_name: spring-cloud-eureka-client01
        build: .
        ports:  #开放端口
          - "8846:8846"
    
    
    
  • 访问http://192.168.109.133:8846/say 返回servier结果


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值