Docker打包Spring Boot工程

1. 使用docker-maven-plugin插件

在pom.xml中声明使用docker-maven-plugin插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.11</version>
    <configuration>
        <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
        <imageTags>
            <imageTag>${project.version}</imageTag>
            <imageTag>latest</imageTag>
        </imageTags>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>
  • imageNames是生成镜像的名称
  • imageTags是将会生成的标签,如上配置会生成两个镜像,一个标签为latest,一个为当前版本号
  • resource中声明将构建输出目录中的jar包拷贝到docker构建目录
  • dockerDirectory声明生成docker镜像的文件目录在src/main/docker

2. 声明参数

在pom中使用properties声明一些参数

<properties>
    <docker.image.prefix>lblimage</docker.image.prefix>
</properties>

project.version/project.build.directory/project.build.finalName等参数无需声明,会直接取到

3. 新建Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim         #包含jdk8的基础镜像
VOLUME /tmp                                  #挂载点 重启后数据还在,这里暂时可以不要这句
ADD test-0.0.1-SNAPSHOT.jar lbltest.jar      #拷贝包
ENV JAVA_OPTS=""                             #配置java参数
#运行镜像时自动启动
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /lbltest.jar"] 

4. 构建镜像文件

mvn clean package docker:build

clean package后会在target/docker/目录下生成Dockerfile和jar包
docker:build则会运行Dockerfile的语句,基于jdk8镜像,拷贝jar包,并指定启动时启动java程序。
打包完后可以测试一下

#查看镜像
docker images
#运行镜像
docker run -d -p 8080:8080 lblimage/test
#查看镜像运行状态
docker ps 

猜你喜欢

转载自blog.csdn.net/lblblblblzdx/article/details/81543016