Skip to content

Intellij IDEA 部署 SpringBoot 工程到 Docker Desktop 容器

Docker Desktop 设置

打开 Docker Desktop 面板,进入设置,找到 General ---> 并选中 Expose daemon on tcp://localhost:2375 without TLS,然后重启 docker desktop

Intellij IDEA 设置

image 下面信息为 Connection successful 说明没问题了。

在目标工程中的 pom.xml 引入 dockerfile-maven-plugin,例如:

xml
<plugin>
	<groupId>com.spotify</groupId>
	<artifactId>dockerfile-maven-plugin</artifactId>
	<version>1.4.13</version>
	<executions>
		<execution>
			<id>default</id>
			<goals>
				<!--默认执行 mvn package 时,同步执行 docker built,打包docker镜像。-->
				<goal>build</goal>
			<!--<goal>push</goal>-->
			</goals>
		</execution>
	</executions>
	<configuration>
		<!--镜像仓库名称-->
		<repository>mengweijin/${project.artifactId}</repository>
		<!--镜像版本号-->
		<tag>${project.version}</tag>
		<buildArgs>
			<!--传递到 Dockerfile 中的参数。-->
			<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
		</buildArgs>
	</configuration>
</plugin>

在目标工程中的 pom.xml 同级目录下创建一个 Dockerfile 文件。

Dockerfile
FROM openjdk:17.0.2-oraclelinux8
LABEL authors="mengweijin"

RUN mkdir -p /app/vitality/logs \
    /app/vitality/temp

WORKDIR /app/vitality

ENV SERVER_PORT=8080 LANG=C.UTF-8 LC_ALL=C.UTF-8

EXPOSE ${SERVER_PORT}
ARG JAR_FILE

ADD ./target/${JAR_FILE} ./app.jar

ENTRYPOINT ["java", \
            "-Djava.security.egd=file:/dev/./urandom", \
            "-Dserver.port=${SERVER_PORT}", \
            "-jar", "app.jar"]

此刻,当运行 maven package 时,就会自动打包 docker 镜像到 docker desktop 中。

在 IDEA 中创建并运行镜像容器

创建容器

image

点击 Apply 保存,点击 Run 直接启动容器。