docker打包springboot与Springcloud项目

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 02:39   11   0

一、docker打包Springcloud项目
使用之前项目中的两个

springcloud-eureka-server
springcloud-eureka-client

服务端
安装插件

 <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.13</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${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>
  </plugins>
 </build>

docker.image.prefix是定义的变量

     <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>Edgware.SR2</spring-cloud.version>
  <docker.image.prefix>fymod</docker.image.prefix>
 </properties>

imageName指定了镜像的名字,本例为 springcloud-eureka-server
dockerDirectory指定 Dockerfile 的位置
resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。
修改application.yml

server:
  port: 8761
eureka:
  instance:
    prefer-ip-address: true
  client:
    registerWithEureka: false
    fetchRegistry: false

新建Dockerfile
在src/main/docker文件夹下新建文件Dockerfile,内容:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springcloud-eureka-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761

构建镜像
cd进入到pom.xml所在目录

mvn clean
mvn package docker:build

客户端
安装插件


 <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.13</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${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>
  </plugins>
 </build>

docker.image.prefix是定义的变量


 <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>Edgware.SR2</spring-cloud.version>
  <docker.image.prefix>fymod</docker.image.prefix>
 </properties>

imageName指定了镜像的名字,本例为 fymod/springcloud-eureka-client
dockerDirectory指定 Dockerfile 的位置
resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。

修改application.yml
192.168.1.7是eureka-server所在服务ip地址。

eureka:
  client:
    serviceUrl:
      defaultZone: http://192.168.1.7:8761/eureka/
server:
  port: 8762
spring:
  application:
    name: service-1

新建Dockerfile
在src/main/docker文件夹下新建文件Dockerfile,内容:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springcloud-eureka-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建镜像
cd进入到pom.xml所在目录

mvn clean
mvn package docker:build

运行

docker run -p 8761:8761 -t fymod/springcloud-eureka-server
docker run -p 8762:8762 -t fymod/springcloud-eureka-client

查看 http://localhost:8761

docker-compose启动镜像
上一步分别启动的两个镜像,本步骤介绍如何使用一个配置文件启动项目。
新建一个docker-compose.yml

version: '3'
services:
  springcloud-eureka-server:
    image: fymod/springcloud-eureka-server
    restart: always
    ports:
      - 8761:8761

  service-1:
    image: fymod/springcloud-eureka-client
    restart: always
    ports:
      - 8762:8762

image是镜像的名字。
cd进入yml文件所在目录,运行

docker-compose up

docker-compose编译并启动镜像
前面介绍的镜像生成是通过mvn package docker:build,其实也可以通过docker-compose生成。
移动Dockerfile位置到项目的根目录下,修改ADD行对应的相对路径位置
springcloud-eureka-server的Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./target/springcloud-eureka-server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761

springcloud-eureka-client的Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./target/springcloud-eureka-client-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

新建docker-build.yml,放到两个项目根目录对应的文件夹下

version: '3'
services:
  springcloud-eureka-server:
    build: springcloud-eureka-server
    ports:
      - 8761:8761

  service-1:
    build: springcloud-eureka-client
    ports:
      - 8762:8762

构建镜像并启动

docker-compose -f docker-compose.yml -f docker-build.yml up 

二、docker打包Springboot项目
pom.xml新增docker配置

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>0.4.3</version>
 <configuration>
 <imageName>${docker.image.prefix}/${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>
</plugin>

imageName镜像名称
dockerDirectory Dockerfile位置
resources 指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。本例,只需一个 jar 文件
Dockerfile定义 /src/main/docker/Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker-spring-boot-1.0.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建dockerImage

项目根路径下执行
mvn package docker:build

运行docker

 
docker run -p 8080:8080 -t kitesweet/pan-search-springboot

打包上传与账号注册
https://hub.docker.com/
登陆

docker login

上传

docker push kitesweet/pan-search-springboot

拉取镜像

docker pull kitesweet/pan-search-springboot

《参考:https://www.kancloud.cn/fymod/springcloud/555303
《参考:https://mykite.github.io/2017/04/17/springboot打包docker镜像部署/

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP