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