macOS IDEA部署Docker到本机Docker Desktop
说明
在macOS上使用IDEA开发项目时,可以直接通过IDEA的Run配置,把项目打包成Docker镜像,然后部署到本机的Docker Desktop里运行.
这个方式适合本地调试Docker环境,不用每次手动执行docker build和docker run.
前提条件
- macOS已经安装并启动
Docker Desktop - IDEA已经安装
Docker插件 - 项目里有可用的
Dockerfile - Java项目已经可以正常打包,比如Maven或Gradle打包成功
配置Docker连接
打开IDEA设置:
Settings | Build, Execution, Deployment | Docker
点击+,选择Docker for Mac.
然后点击Test Connection,看到连接成功就说明IDEA已经能连接到本机Docker Desktop.
配置Run
打开:
Run | Edit Configurations
点击+,这里常用有两个选择:
Docker | Dockerfile
适合项目里有Dockerfile,需要IDEA先构建镜像,再运行容器的场景.
它会执行类似下面的流程:
1 | docker build -t my-app:latest . |
也就是说,代码改了以后,可以让IDEA重新build镜像,再启动容器.
Spring Boot项目,前端项目,或者自己写了Dockerfile的项目,一般选这个.
Docker | Docker Image
适合镜像已经存在,只需要运行这个镜像的场景.
它会执行类似下面的流程:
1 | docker run --name mysql-test -p 3306:3306 mysql:8 |
比如运行mysql,redis,nginx,nacos这类现成镜像,或者已经手动build好了镜像,只想让IDEA帮忙启动容器,就选这个.
简单记:
1 | 有Dockerfile,需要构建镜像 -> Docker | Dockerfile |
Dockerfile配置项
如果选择Docker | Dockerfile,关键配置如下:
| 配置项 | 说明 |
|---|---|
| Server | 选择前面配置好的Docker for Mac |
| Dockerfile | 选择项目里的Dockerfile |
| Context folder | 一般选择项目根目录 |
| Image tag | 镜像名称,比如my-app:latest |
| Container name | 容器名称,比如my-app |
| Run built image | 勾选,表示构建完成后直接运行镜像 |
| Bind ports | 端口映射,比如本机8080映射容器8080 |
| Environment variables | 按需配置环境变量 |
Before launch
如果是Spring Boot项目,建议在Before launch里加打包任务.
Maven项目可以配置:
1 | clean package -DskipTests |
Gradle项目可以配置:
1 | bootJar |
这样点击Run时,IDEA会先打包项目,再根据Dockerfile构建镜像并启动容器.
常见问题
端口被占用
修改Bind ports里的本机端口.
比如容器内部还是8080,本机可以改成18080.
1 | 18080 -> 8080 |
容器需要访问宿主机服务
macOS的Docker Desktop里,容器访问宿主机可以使用:
1 | host.docker.internal |
比如容器里的程序要连接本机MySQL,可以把数据库地址配置成:
1 | host.docker.internal:3306 |
挂载本机目录失败
检查Docker Desktop是否允许访问这个目录.
可以在Docker Desktop里查看:
Settings | Resources | File Sharing
总结
本地项目通过IDEA部署到macOS的Docker Desktop,核心就是两步:
- 在IDEA里配置
Docker for Mac - 在Run配置里选择
Docker | Dockerfile
如果只是运行已有镜像,才选择Docker | Docker Image.





