JAVA项目使用maven插件和docker实现自动打包部署运行

JAVA项目使用maven插件和docker实现自动打包部署运行

此文章使用maven的打包插件maven-assembly-plugin以及docker的打包功能,实现自动打包部署并运行的功能。

其中使用到的工具如下:

  • maven 系统安装并配置完成maven
  • intellij idea 确认安装docker插件并配置好docker连接,确认安装maven插件,并配置好相关配置
  • docker 使用服务器安装docker服务,非windows

工程搭建

创建工程如下图所示:

在这里插入图片描述

创建工程为maven工程,工程主结构包括:

  • assembly文件夹: 包含assembly.xml配置文件,其中包含打包的配置文件
  • bin文件夹:包含启动运行脚本,start.sh脚本请自行搜索
  • java目录:包含java代码

pom文件配置

    <dependencies>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.0.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution><!-- 配置执行器 -->
                        <id>make-assembly</id>
                        <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                        <goals>
                            <goal>single</goal><!-- 只运行一次 -->
                        </goals>
                        <configuration>
                            <finalName>${project.name}</finalName>
                            <descriptor>src/main/assembly/assembly.xml</descriptor><!--配置描述文件路径-->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

添加了一个curator的包用做测试,主要打包配置在中,打包后的文件名为**${project.name},配置文件路径为src/main/assembly/assembly.xml**。

打包配置文件

<assembly>
    <id></id>
    <formats>
        <format>tar.gz</format><!--打包的文件格式,也可以有:war zip-->
    </formats>
    <!--tar.gz压缩包下是否生成和项目名相同的根目录-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <!--是否把本项目添加到依赖文件夹下-->
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <!--将scope为runtime的依赖包打包-->
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>/</outputDirectory>
            <!-- 将start.sh脚本放在打包后的根目录下-->
        </fileSet>
        <fileSet>
            <directory>target/classes</directory>
            <outputDirectory>classes</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

配置文件如上图所示,注意将start.sh脚本放在打包后的根目录下。

打包结果展示

运行mvn clean package查看打包结果

在这里插入图片描述
如上图所示,在target文件夹中打包出.tar.gz包,打开压缩包结构:
在这里插入图片描述

通过docker远程部署

如何在intellij idea中配置docker并使用tls连接的方法,将在另外的文章中详述,这里假设docker相关配置都已配置完成并测试连接正常。

编写docker文件如下:

FROM ***

MAINTAINER dreamxiaohai dreamxiaohai@gmail.com

RUN apt-get update && apt-get install openjdk-8-jre -y

ADD target/testPackageAndDocker.tar.gz /usr/local/

RUN chmod +x /usr/local/testPackageAndDocker/start.sh

WORKDIR /usr/local/testPackageAndDocker/

CMD ./start.sh start && tail -f /tmp/result.log

配置intellij idea运行命令
在这里插入图片描述
配置完成后,点击运行,可看到以下结果,证明远程运行无误在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的。 这是在使用 Docker 部署 Spring Boot 项目的步骤: 1. 在 pom.xml 中加入打包Docker 镜像的件: ``` <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.9</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> </configuration> </plugin> </plugins> </build> ``` 2. 在项目根目录下创建 Dockerfile 文件,并写入以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ARG DEPENDENCY=target/dependency COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib COPY ${DEPENDENCY}/META-INF /app/META-INF COPY ${DEPENDENCY}/BOOT-INF/classes /app ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"] ``` 3. 在项目根目录下执行以下命令来打包项目并创建 Docker 镜像: ``` mvn clean package docker:build ``` 4. 运行以下命令来启动 Docker 容器: ``` docker run -p 8080:8080 -t {image-id} ``` 现在,你的 Spring Boot 项目已经在 Docker 容器中运行了。 希望这对你有帮助。 ### 回答2: 使用Docker部署Spring Boot项目是一种常见的部署方式,可以提供更好的可移植性和隔离性。下面是一些基本的步骤来帮助您使用Docker部署Spring Boot项目。 1. 第一步是创建一个Dockerfile。 Dockerfile是一个文本文件,用于定义Docker映像的构建过程。您可以使用任何文本编辑器创建一个名为Dockerfile的文件。在文件中,您需要指定基础映像,将项目复制到映像中,设置项目的依赖项和运行时环境,并指定项目启动的命令。以下是一个简单的Dockerfile示例: ``` FROM openjdk:8-jdk-alpine COPY target/myproject.jar /app/myproject.jar WORKDIR /app CMD ["java", "-jar", "myproject.jar"] ``` 2. 在Dockerfile的同一目录下,打开终端窗口并运行以下命令来构建Docker映像: ``` docker build -t myproject . ``` 其中,myproject是您为映像指定的名称。 3. 构建成功后,运行以下命令来启动容器并运行Spring Boot项目: ``` docker run -d -p 8080:8080 myproject ``` 其中,8080是外部端口,可以根据需要更改。您可以使用`docker ps`命令检查容器是否正在运行。 4. 完成后,您可以在浏览器中输入`http://localhost:8080`来访问您的Spring Boot应用程序。 使用Docker部署Spring Boot项目非常方便,但请确保您已正确配置和安装Docker,并正确设置项目的依赖项和运行时环境。希望这些步骤能够帮助您成功部署Spring Boot项目。 ### 回答3: 使用Docker部署Spring Boot项目需要以下步骤: 1. 安装DockerDocker Compose:在服务器上安装DockerDocker Compose,确保版本符合要求。 2. 创建Dockerfile:在项目根目录下创建一个名为Dockerfile的文件。Dockerfile是一个文本文件,其中包含了构建Docker镜像所需的所有指令。根据需要选择合适的基础镜像,例如OpenJDK。 3. 编写Dockerfile:在Dockerfile中,首先指定基础镜像,然后添加所需的依赖和项目文件。使用COPY命令将Spring Boot项目的可执行JAR包复制到镜像中。 4. 构建Docker镜像:在命令行中,进入项目根目录并执行docker build命令,如:docker build -t my-spring-boot-app . 5. 启动Docker容器:使用docker run命令启动Docker容器并运行Spring Boot项目。确保将外部端口映射到容器内部的适当端口,以便可以从外部访问项目。例如:docker run -p 8080:8080 my-spring-boot-app。 6. 验证部署使用浏览器或其他工具访问服务器的IP地址和映射的端口号,确保能够正常访问Spring Boot应用程序。 以上是使用Docker部署Spring Boot项目的基本步骤,可以根据具体需求进行调整和扩展。需要注意的是,在编写Dockerfile时,要确保将项目的依赖项和配置文件正确复制到镜像中,以确保容器能够正常运行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值