Docker允许开发人员在容器中部署应用程序,以便在与生产环境相同的环境中测试代码。IntelliJ IDEA使用Docker插件提供Docker支持。在IntelliJ IDEA Ultimate版本中,该插件默认情况下是捆绑安装并被启用的。对于IntelliJ IDEA社区版,您需要安装Docker插件。
启用 Docker 支持
步骤如下:
-
本地安装 Docker
-
连接Docker守护进程的 配置(下文重点介绍)
-
连接Docker守护进程 (正式连接):点击底部的 Services 工具窗口 或 在主菜单中选择 View | Tool Windows | Services ,然后选择 Docker ,点击 运行按钮即可连接 Docker守护进程。
-
连接之后,在 Services 工具窗口,中可以方便的完成(点击图标和鼠标右键): 管理镜像、运行容器、监视容器、Docker Compose、Docker Debug等操作。
连接Docker守护进程的配置 :
在 “设置/首选项” 对话框 (Ctrl + Alt + S)中,选择 Build, Execution, Deployment | Docker 点击 ➕,添加 Docker 配置,在此配置如何连接到 Docker 守护进程。
连接设置取决于Docker版本和操作系统:
-
Docker for Mac:如果你本地安装了 Docker for macOS,则推荐此连接选项。
-
Unix socket: 如果你使用 Linux 系统,并在本地安装了 Docker,则推荐此连接选项。
如果出现权限被拒绝错误,请将当前用户添加到计算机上的 docker 组,然后注销,重新登录。
-
Docker Machine:如果您使用的是Docker Toolbox for Windows,建议使用此选项连接Docker API。
-
TCP socket: 如果你使用的是Docker for Windows,则这是常用的连接选项。此选项也适用于Linux、Docker for macOS和Docker Toolbox。如果你本地并未安装任何 Docker 程序也可以使用此选项来连接远程主机上的 Docker 守护进程 (见下文,但是某些操作是不支持的)。
- Engine API URL:取决于Docker版本和操作系统:
- Docker for Windows:
tcp://localhost:2375
。注意:需要事先在Docker设置的 General 部分,启用 Expose daemon on tcp://localhost:2375 without TLS 选项(其作用是:将docker与本地的连接设置为不需要TLS加密)。 - Docker for macOS 或 Linux:
unix:///var/run/docker.sock
- Docker Toolbox for Windows 或 macOS:
https://192.168.99.100:2376
- Docker for Windows:
- Certificates folder : 证书文件夹的路径 (一般留空)。取决于你的Docker版本和操作系统:
- Docker for Windows, macOS 或 Linux: 留空即可
- Docker Toolbox for Windows:
%HOMEPATH%\.docker\machine\machines\default
- Engine API URL:取决于Docker版本和操作系统:
配置 Path mappings (路径映射) :
对于Windows和macOS:指定可以在主机和容器之间共享的文件夹的映射。
- Local path: 用于(volume binding)卷绑定的本地文件夹的路径。
- Virtual machine path: Docker虚拟机文件系统中的相应目录路径。
Idea 连接 CentOS7虚拟机中的Docker
需要修改 Docker 配置文件让其开放 Docker Remote API (docker REST API)
查看配置文件位于哪里:
|
|
编辑该文件:
|
|
在该行添加如下内容:(这里端口为2375,所以后面在idea中连接时也要填写该端口)
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
重新加载配置文件:
|
|
重启docker:
|
|
测试:
curl localhost:2375/info
我的本地虚拟机中是:
192.168.25.129:2375
管理镜像
配置 Docker registry :
-
如果只使用Docker Hub,则不需要配置 Docker registry。
-
在"设置/首选项"对话框Ctrl + Alt + S中,选择 Build, Execution, Deployment | Docker | Registry.
-
点击 ➕ 进行添加
从 Dockerfile 构建 Image:
-
打开该 Dockerfile
-
单击左侧装订线中的 运行图标(绿色三角形) ,在弹出的菜单中选择 build the image on Docker。
-
IntelliJ IDEA将会运行
docker build
命令。
运行容器
IntelliJ IDEA使用运行配置( Run | Edit Configurations )来运行Docker容器。 Docker运行配置共有三种类型:
- Docker Image
- Dockerfile
- Docker-compose
从Image中运行容器:
- 从Services 工具窗口中,右键该 image ,选择 create container
- 将会打开 Create Docker Configuration 对话框,然后在此对话框中配置
docker run
命令。
上图中我希望最终拼凑成如下命令:
|
|
那么需要将 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
填写在 Command 表单中,它们两个将作为参数传递给 image 中的 CMD使用。
从Dockerfile运行容器:
- 打开该 Dockerfile
- 单击左侧装订线中的 运行图标(绿色三角形) ,在弹出的菜单中选择 Run on Docker。(不推荐,请继续看)
- 重点: 要使用自定义的运行配置,在上面弹出的菜单中选择 New Run Configuration 。 在这里您可以为构建的映像指定自定义标签,为容器指定名称,Dockerfile的上下文文件夹,绑定数据卷、绑定端口、配置环境变量等各种选项。
您可以在"Project"工具窗口中右键单击该 Dockerfile 以执行以下有用操作:
- 从Dockerfile运行容器
- 保存Dockerfile的运行配置
- 选择此Dockerfile的运行配置以将其激活
Docker Compose
Docker Compose用于运行多容器应用程序。 例如,您可以将Web服务器,后端数据库和应用程序代码作为单独的服务运行。 如有必要,可以通过添加更多容器来扩展每个服务。 这使您可以在类似于生产的动态环境中执行有效的开发和测试。
从Docker Compose运行多容器:
- 创建Docker Compose文件
- 从主菜单中选择,Run | Edit Configurations
- 点击➕,选择 Docker ,选择 Docker-compose
- 指定Docker Compose文件。 如有必要,您可以限制启动的服务;比如,指定环境变量,并在启动相应的容器之前强制构建映像(即为
docker-compose up
命令添加--build
选项)。 - 点击 运行 按钮
你也可以参考前面介绍的 “从Dockerfile运行容器 " 的方式来处理 Docker Compose文件
Docker-compose 运行配置 还可以使用.env
后缀标识环境文件,请将它们放在与Docker Compose文件相同的目录中。
故障排除
Docker集成插件有一定的局限性和缺陷,但是JetBrains一直在为它进行修复和改进。
-
无法连接到 Docker for Windows:需要事先在 Docker设置 的 General 部分,启用 Expose daemon on tcp://localhost:2375 without TLS 选项(其作用是:将docker与本地的连接设置为不需要TLS加密)。
-
不能使用 Docker Compose:确保Docker Compose可执行文件在 设置/首选项对话框中 的 Build, Execution, Deployment | Docker | Tools 中正确指定。
-
无法使用端口绑定:确保相应的容器端口是被暴露的。 在 Dockerfile 中使用 EXPOSE 命令暴露。
参考
Docker - Help | IntelliJ IDEA
Docker connection settings - Help | IntelliJ IDEA