- 开发容器:整个项目在其
devcontainer.json描述的容器中打开,IDE 后端也运行在容器里。这属于远程开发,和 SSH 类似。 - Docker / Docker Compose 运行目标:项目留在本地,只有某个运行配置在容器中执行。
开发容器
前提条件
- 本机已安装 Docker,且当前 Docker 上下文的守护进程运行在本机。项目文件夹要绑定挂载进容器,所以其他机器上的守护进程不行。
- Dev Containers CLI(
devcontainer)。可以在设置 › 语言和框架 › 语言服务器中安装 Dev Containers CLI(需要 Node.js), 也可以自己把devcontainer放到PATH中。 - 项目文件夹中有
.devcontainer/devcontainer.json或.devcontainer.json。 - 项目必须已受信任:构建容器会执行项目自带的命令(
initializeCommand、Dockerfile 构建)。 - 容器为 x86_64 或 aarch64 上的 Linux。
在容器中重新打开项目
1
在本地打开项目
打开包含
devcontainer.json 的文件夹,并信任它。2
在容器中重新打开
选择文件 › 在容器中重新打开,如有提示再选择当前窗口或新窗口。
3
等待容器就绪
OpenIDEA 会对该文件夹运行
devcontainer up 来构建或启动容器,首次构建可能需要一段时间。随后在容器中安装并启动
openidea-server,再打开容器里的项目文件夹。remoteUser 身份、在 remoteWorkspaceFolder 中打开。状态栏显示 Dev Container: <folder name>,
该项目也会出现在欢迎页的最近项目列表中。
如果失败(没有 devcontainer.json、未安装 Docker、构建出错等),会弹出无法在容器中重新打开项目通知,说明原因并附上 CLI 日志的末尾部分。
devcontainer.json 中哪些内容生效
devcontainer up负责的一切:镜像、Dockerfile、features、挂载和生命周期命令。它们由 CLI 执行一次,服务端不会再次运行postStartCommand。remoteEnv:作用于容器内的终端、运行、语言服务器和工具。修改后选择文件 › 重新加载环境,新进程即可使用新值。forwardPorts:自动转发到本机。需要更多端口时,在端口工具窗口中添加,用法与 SSH 窗口相同。
~/.openidea/data 下。
限制
- 只使用默认配置(先找
.devcontainer/devcontainer.json,再找.devcontainer.json),不能在.devcontainer/子文件夹中的多个配置之间选择。 - 在容器中重新打开只适用于本地项目,在 SSH 或 WSL 窗口中不可用。
- 没有附加到任意运行中容器的命令;容器总是来自项目的
devcontainer.json。
Docker 和 Docker Compose 运行目标
运行目标让运行配置在本机以外的地方执行。容器类目标会把配置改写成本地的docker run --rm(或 docker compose run --rm),
并把项目绑定挂载进去,所以控制台、输入、停止和测试结果都和本地运行一样可用。
1
添加目标
打开设置 › 构建、执行、部署 › 运行目标,点击 +,把类型设为 Docker 或 Docker Compose。
2
描述容器
Docker 类型填写图像(例如
python:3.12);Docker Compose 类型填写 Compose
文件(留空使用项目的默认文件)和服务。3
使用目标
在运行配置的运行于中选择该目标,或把它设为默认运行目标。
运行目标的整体说明(包括 SSH 目标)见运行配置。