侧边栏壁纸
博主头像
高压锅里的小白 博主等级

行动起来,活在当下

  • 累计撰写 59 篇文章
  • 累计创建 28 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Idea配置Docker容器作为开发运行环境

高压锅里的小白
2025-02-17 / 0 评论 / 0 点赞 / 40 阅读 / 0 字
温馨提示:
本文最后更新于2025-02-17,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

​ ​ 在 IntelliJ IDEA 中,可以通过配置 Docker 容器作为运行环境,使得点击运行时直接让 Java 应用程序在 Docker 容器中运行。

1. 安装 Docker 支持插件

确保已安装 IntelliJ IDEA 的 Docker 插件:

  1. 打开 IntelliJ IDEA。
  2. 进入 File -> Settings -> Plugins
  3. 搜索 Docker,安装并启用插件。

Snipaste_2025-02-16_22-47-49.png

tips:warn 注意:新版的idea默认就有Docker插件了

2. 配置 Docker 连接

  1. 打开 File -> Settings -> Build, Execution, Deployment -> Docker
  2. 点击 + 添加 Docker 连接。
  3. 选择 Docker for WindowsDocker for MacTCP socket(根据你的操作系统选择)。
  4. 测试连接,确保 IDEA 能够连接到 Docker。

Windows系统

Snipaste_2025-02-16_22-56-05.png

​ ​ 在 Docker for Windows 中,DefaultDesktop-Linux 是两个不同的后端选项,它们的区别主要在于底层技术实现和适用场景。

1. Default(默认模式)

  • 底层技术:使用 Windows 原生的容器技术(Windows Containers)。
  • 适用场景
    • 运行基于 Windows 的容器(例如 .NET Framework 应用程序)。
    • 需要与 Windows 系统深度集成的场景。
  • 特点
    • 容器镜像基于 Windows 系统(如 mcr.microsoft.com/windows)。
    • 容器与宿主机共享 Windows 内核。
    • 不支持运行 Linux 容器。
  • 性能
    • 在 Windows 上运行 Windows 容器性能较好。
    • 但 Windows 容器镜像通常较大,启动较慢。

2. Desktop-Linux(Linux 容器模式)

  • 底层技术:使用 Linux 容器技术,通过 Hyper-V 虚拟机运行一个轻量级的 Linux 内核。
  • 适用场景
    • 运行基于 Linux 的容器(例如 Java、Python、Node.js 等应用程序)。
    • 大多数开源软件和工具都是为 Linux 容器设计的。
  • 特点
    • 容器镜像基于 Linux 系统(如 alpineubuntuopenjdk 等)。
    • 容器与宿主机共享 Linux 内核(运行在虚拟机中)。
    • 支持运行 Linux 容器,但不支持 Windows 容器。
  • 性能
    • 在 Windows 上运行 Linux 容器性能较好。
    • Linux 容器镜像通常较小,启动较快。

3. 如何选择?

  • 选择 Desktop-Linux 的情况
    • 你的应用程序是基于 Linux 的(例如 Java、Python、Node.js 等)。
    • 你使用的 Docker 镜像是基于 Linux 的(例如 openjdk:11nginx:alpine 等)。
    • 你需要与大多数开源工具和生态系统兼容。
  • 选择 Default 的情况
    • 你的应用程序是基于 Windows 的(例如 .NET Framework)。
    • 你使用的 Docker 镜像是基于 Windows 的(例如 mcr.microsoft.com/windows)。
    • 你需要与 Windows 系统深度集成。

4. Java 开发推荐选择

对于 Java 开发,推荐选择 Desktop-Linux,因为:

  • Java 应用程序通常运行在 Linux 环境中。
  • 大多数 Java 相关的 Docker 镜像(如 openjdktomcat)都是基于 Linux 的。
  • Linux 容器镜像更轻量,启动更快,资源占用更少。

3. 创建 Dockerfile

在项目根目录下创建一个 Dockerfile,用于定义运行环境。例如:

# 使用官方 Java 镜像
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 复制编译后的 JAR 文件到容器
COPY target/myapp.jar /app/myapp.jar

# 暴露端口
EXPOSE 8080

# 启动应用
CMD ["java", "-jar", "myapp.jar"]

4. 配置 Docker 运行环境

  1. 打开 Run/Debug Configurations
    • 点击右上角的运行配置下拉菜单,选择 Edit Configurations
  2. 添加一个新的 Docker 配置:
    • 点击 +,选择 Docker -> Dockerfile
  3. 配置 Docker 运行参数:
    • Dockerfile:选择项目中的 Dockerfile
    • Image tag:为镜像设置一个标签(例如 myapp:latest)。
    • Container name:容器名称
    • Bind ports:映射容器端口到主机端口(例如 8080:8080)。
    • Bind mounts:映射的目录
    • Run options:执行的命令
  4. 保存配置。

Snipaste_2025-02-17_20-06-01.png

5. 运行项目

  1. 选择刚刚创建的 Docker 运行配置。
  2. 点击运行按钮(绿色三角形),IntelliJ IDEA 会自动构建 Docker 镜像并启动容器。
  3. 查看运行日志,确认应用是否成功启动。
tips:warn Docker模式运行,IDEA 不会自动打包项目,你需要手动运行 mvn clean package 或 gradle clean build后,再点击运行按钮

6. 可选配置

1. 配置程序Docker网络

程序运行在Docker中,如果需要使用其他服务,比如mysql、redis等,可以用IP访问,但是IP可能会变,这样就需要频繁改IP,非常麻烦,如果想直接使用 容器名称+端口的方式访问,就需要将多个容器设置为同一个网络。

创建网络

docker network create my_network

配置Java程序容器网络

  • 打开 Run/Debug Configurations
    • 点击右上角的运行配置下拉菜单,选择 Edit Configurations
  • 选择一个要使用的Docker 配置:
  • 配置 Docker 运行命令:
    • Run options:执行的命令

配置内容为:

--network my_network

Snipaste_2025-02-17_21-54-23.png

这样就可以在Java程序中,使用其他服务的容器名称访问服务了。

2. Docker服务配置自动打包

按照上面的配置,重新运行Java服务是不会更新代码的,需要手动打包后才可以,所以可以配置 Before Launch在启动前自动构建打包

Snipaste_2025-02-17_22-59-45.png

这样就可以点击重启服务时,自动根据最新代码构建了。

3. 调试项目(Debug)

​ ​ 正常配置完,是没有办法像运行在本地那样子进行Debug调试的,需要单独进行配置。

配置步骤如下:

  • 打开 Run/Debug Configurations
    • 点击右上角的运行配置下拉菜单,选择 Edit Configurations
  • 添加一个 Remote JVM Debug 配置:
  • 配置 Before launch
    • 选择前面配置的Docker服务
  • 保存配置

Snipaste_2025-02-17_22-33-02.png

  • Docker服务将 5005端口映射出来,并保存配置

    Snipaste_2025-02-17_23-02-28.png

  • Dockerfile文件的 java命令增加如下配置

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

Snipaste_2025-02-17_23-07-32.png

然后在这里点击这个按钮就可以Debug方式运行程序了。

Snipaste_2025-02-17_22-53-18.png

总结

​ ​ 通过以上步骤,你可以在 IntelliJ IDEA 中直接点击运行按钮,将 Java 应用程序运行在 Docker 容器中。这种方式非常适合开发和测试阶段,能够保持环境一致性。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区