有很多开发者在项目部署过程中都会遇到一些繁琐的问题,比如打包、上传、部署等。而使用Docker可以非常方便地解决这些问题。在本文中,将详细讲解如何使用IDEA中的docker打包插件,将代码打包并直接发布到服务器上。这样,我们就可以非常快速地完成项目的部署。当然,您可能会有疑问,即:我在IDEA中编写的代码,如何部署到服务器上呢?下面,我们将详细描述部署过程。
一、配置docker的远程访问
这步非常的关键,是我们IDEA和服务器产生关联的重要步骤:
1、修改 /lib/systemd/system/docker.service
vim /lib/systemd/system/docker.service
在修改Docker daemon的启动选项,使其可以监听来自远程客户端的Docker API请求,-H参数用于指定监听的地址和端口,这里使用tcp://0.0.0.0:2375表示监听所有网络接口的2375端口。
//将
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
//替换为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2、重启docker
systemctl daemon-reload
systemctl restart docker
3、测试是否修改成功
http://IP:2375/version
二、IDEA中进行配置
1、具体的配置如下:
2、配置后IDEA的services中会出现docker,如下图:
三、配置dockerfile文件
FROM openjdk
EXPOSE 8044
VOLUME /tmp
ADD shangjian-sap.jar /shangjian-sap.jar
ENTRYPOINT ["java","-server","-Xms1024m","-Xmx1024m","-Dspring.profiles.active=local","-jar","shangjian-sap.jar"]
这个 Dockerfile 中的指令说明如下:
- FROM:指定我们的镜像基于哪个镜像构建。
- EXPOSE:声明容器运行时需要监听的端口。
- COPY:将应用程序的 jar 文件复制到容器的文件系统中。
- ENTRYPOINT:定义容器启动时需要运行的命令,这里是运行 jar 文件。
四、在pom文件中配置docker打包插件
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.0</version>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名-->
<imageName>docker/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径-->
<dockerDirectory>./</dockerDirectory>
<!--指定远程 docker api地址-->
<dockerHost>http://自己IP:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
五、打包构建镜像
1、maven进行打包,以及docker构建镜像:
2、创建docker容器
步骤一
步骤二
步骤三
步骤四
六、总结
总的来说,本文通过介绍在IDEA中使用docker插件实现快速打包并部署项目的方法。这种部署方式适用于开发过程中需要频繁打包部署的场景。当然,还有其他的部署方式,如使用Jenkins等自动化工具。不过无论采用哪种方式,核心的操作步骤都类似:打包项目并将打好的包上传到服务器,最后启动项目。具体要看实际情况和需求,选择最适合自己的部署方式。