docker打包springboot与Springcloud项目

一、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镜像部署/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值