IDEA一键部署springboot项目到远程docker

前言

IDEA是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,本文将这三者完美结合在一起。

1.docker环境安装

参考资料:https://docs.docker.com/install/

2.配置docker远程端口

2.1 配置远程端口

vi /usr/lib/systemd/system/docker.service
找到 ExecStart 添加-H tcp://0.0.0.0:2375

在这里插入图片描述

2.2 重启docker

systemctl daemon-reload
systemctl restart docker

2.3 开放端口

// 查询2375是否对外开启
firewall-cmd --query-port=2375/tcp
// 开启2375
firewall-cmd --add-port=2375/tcp
// 查询2375是否对外开启
firewall-cmd --query-port=2375/tcp

3. IDEA安装docker插件

在这里插入图片描述

4.IDEA连接远程docker端口

编辑:
在这里插入图片描述
填写名称和地址:在这里插入图片描述
测试:
在这里插入图片描述

5.新建SpringBoot项目

参考地址:https://start.spring.io/
pom 文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.docker.test</groupId>
	<artifactId>docker-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>docker-demo</name>
	<description>docker-demo for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

代码结构:
在这里插入图片描述
端口:
在这里插入图片描述

6.新建Dockerfile文件

在项目根目录新建Dockerfile文件,并填入以下内容:

#使用jdk8作为基础镜像
FROM java:8
#指定作者
MAINTAINER tom
#暴漏容器的8088端口
EXPOSE 8088
#将复制指定的docker-demo-0.0.1-SNAPSHOT.jar为容器中的job.jar,相当于拷贝到容器中取了个别名
ADD target/docker-demo-0.0.1-SNAPSHOT.jar /job.jar
#创建一个新的容器并在新的容器中运行命令
RUN bash -c 'touch /job.jar'
#设置时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#相当于在容器中用cmd命令执行jar包  指定外部配置文件
ENTRYPOINT ["java","-jar","/job.jar"]

7. 运行方法一:编辑配置

在这里插入图片描述
在这里插入图片描述
名词解释:

Image tag : 指定镜像名称和tag

Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]

Bind mounts : 将宿主机目录挂到到容器内部目录中。
格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器 /usr/local/project/dockerdocker-demo 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。

运行:
在这里插入图片描述
在这里插入图片描述

8.运行方法2:配置maven,打包即创建镜像,然后手动添加容器

<!--使用docker-maven-plugin插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>

                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <!--指定生成的镜像名,前面的那个名字你随便改,后面的引用,不能动-->
                    <imageName>cuixh/${project.artifactId}</imageName>
                    <!--指定标签,也就是版本号,可以自定义-->
                    <imageTags>
                        <imageTag>v1.5</imageTag>
                    </imageTags>
                    <!-- 指定 Dockerfile 路径-->
                    <dockerDirectory>${project.basedir}</dockerDirectory>

                    <!--指定远程 docker api地址 也就是服务器ip+docker的端口号-->
                    <dockerHost>http://192.168.229.129.104: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>

在这里插入图片描述

原创文章 29 获赞 81 访问量 1万+

猜你喜欢

转载自blog.csdn.net/cuixhao110/article/details/105425505