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

IDEA一键部署springboot项目到远程docker_第1张图片

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插件

IDEA一键部署springboot项目到远程docker_第2张图片

4.IDEA连接远程docker端口

编辑:
IDEA一键部署springboot项目到远程docker_第3张图片
填写名称和地址:IDEA一键部署springboot项目到远程docker_第4张图片
测试:
IDEA一键部署springboot项目到远程docker_第5张图片

5.新建SpringBoot项目

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


<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.0modelVersion>
	<parent>
		<groupId>org.springframework.bootgroupId>
		<artifactId>spring-boot-starter-parentartifactId>
		<version>2.2.6.RELEASEversion>
		<relativePath/> 
	parent>
	<groupId>com.docker.testgroupId>
	<artifactId>docker-demoartifactId>
	<version>0.0.1-SNAPSHOTversion>
	<name>docker-demoname>
	<description>docker-demo for Spring Bootdescription>

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

	<dependencies>
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
		dependency>

		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-testartifactId>
			<scope>testscope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintagegroupId>
					<artifactId>junit-vintage-engineartifactId>
				exclusion>
			exclusions>
		dependency>
	dependencies>

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

project>

代码结构:
IDEA一键部署springboot项目到远程docker_第6张图片
端口:
IDEA一键部署springboot项目到远程docker_第7张图片

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. 运行方法一:编辑配置

IDEA一键部署springboot项目到远程docker_第8张图片
IDEA一键部署springboot项目到远程docker_第9张图片
名词解释:

Image tag : 指定镜像名称和tag

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

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

运行:
IDEA一键部署springboot项目到远程docker_第10张图片
IDEA一键部署springboot项目到远程docker_第11张图片

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


            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>1.0.0version>

                
                <executions>
                    <execution>
                        <id>build-imageid>
                        
                        <phase>packagephase>
                        <goals>
                            <goal>buildgoal>
                        goals>
                    execution>
                executions>

                <configuration>
                    
                    <imageName>cuixh/${project.artifactId}imageName>
                    
                    <imageTags>
                        <imageTag>v1.5imageTag>
                    imageTags>
                    
                    <dockerDirectory>${project.basedir}dockerDirectory>

                    
                    <dockerHost>http://192.168.229.129.104:2375dockerHost>

                    
                    <resources>
                        <resource>
                            <targetPath>/targetPath>
                            
                            <directory>${project.build.directory}directory>
                            
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                configuration>
            plugin>

IDEA一键部署springboot项目到远程docker_第12张图片

你可能感兴趣的:(分布式,Spring,JAVA,docker,intellij,idea,spring,boot)