Java Spring打包

168 阅读1分钟

使用idea一键式打包

要用到的插件docker-maven-plugin插件
一定是maven项目

方法1:不需要dockerfile,自动生成dockerfile

vim pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>untitled</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <!-- 镜像 前缀姓名-->
        <docker.image.prefix>guoweixin</docker.image.prefix>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.0.0</version>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 镜像名称  guoweixin/exam-->
                    <imageName>cainiao/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!-- 基础镜像jdk 1.8-->
                    <baseImage>java</baseImage>
                    <!-- 制作者提供本人信息 -->
                    <maintainer>guoweixin guoweixin@aliyun.com</maintainer>
                    <!--切换到/ROOT目录 ,下面jar包放在哪里了,就要去哪里-->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <!-- <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
                   -->
                    <entryPoint>["bash", "-c", "tail -f /dev/null"]</entryPoint>
                    <!-- 指定 Dockerfile 路径
                      <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                   -->

                    <!--指定远程 docker api地址-->
                    <dockerHost>http://172.20.3.136:2375</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--用于指定需要复制的根目录,${project.build.directory}表示target目录,就是最终放入镜像的地方-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>

            </plugin>


        </plugins>
    </build>

</project>
执行:
1.clean(clean是双击)

image.png

2.package(是双击)

image.png

3.查看

首先查看我们的jar包生成

image.png

第二我们看我们的镜像生成

image.png

第三运行我们的镜像

image.png

image.png

image.png apply --> Run 查看容器

image.png

开发人员在打包前要更改的配置

1.pom.xml
<imageTag></imageTag>
这个标签里面写的是版本号
2.项目对应的配置文件更改
环境不同,对应的数据库等连接配置文件不同,要进行相应的更改,如果用的是apollo,nacos等配置中心,只需更改相应的参数
3.经过上面的运行测试后,更改为线上配置文件,然后clean,package
4.推送镜像

image.png

image.png

方式二:自己写dockerfile

其实就是把如下参数的注释去掉,然后写上自己dockerfile的位置,其他配置类似dockerfile的都删掉

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>untitled3</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <docker.image.prefix>demo</docker.image.prefix>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.0.0</version>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 镜像名称  guoweixin/exam-->
                    <imageName>cainiao/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>3.0</imageTag>
                    </imageTags>
                    <dockerDirectory>${project.basedir}/</dockerDirectory>

                    <dockerHost>http://172.20.3.136:2375</dockerHost>
                </configuration>

            </plugin>


        </plugins>
    </build>
新建Dockerfile文件

注意要在项目的根目录下新建Dockerfile文件

FROM java
MAINTAINER guoweixin guoweixin@aliyun.com
WORKDIR /ROOT
ADD /ROOT/untitled3-1.0-SNAPSHOT.jar /ROOT/
RUN echo "hello world" > /ROOT/lin.txt
ENTRYPOINT ["bash", "-c", "tail -f /dev/null"]
CMD ["java", "-version"]
打包和运行的步骤和上面一样