背景
mac m1的docker 怎么安装可以看我之前的文章。主要是换了mac之后,如idea 连接docker ,实现idea上 从操作maven打包jar ,配合dockfile操作docker构建镜像,创建容器,运行容器的过程。也就是idea上可以实现,开发、打包,部署到远程服务器并运行的过程。
如何docker开启远程连接服务
让idea可以访问并操作docker。
基于mac的docker for mac本身不支持远程访问,需要依赖一款名叫 socat的网络工具提供的镜像来做远程访问。
非容器方式
安装socat:brew install socat
运行socat:
#打开独立的新Terminal,执行启动socat,一直保持该窗口,不用管.
socat -d TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
#如果要后台运行,懒得打开新的Terminal,使用 nohup terminalCMD &
#示例:
# nohup socat -d TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock &
窗口不要关闭。
另起一个终端输入:curl http://localhost:2375/info 。出现如下,说明成功
容器方式
参考:https://blog.csdn.net/qq_31493821/article/details/118371562
拉取:docker pull alpine/socat
这个命令是从docker 官网 socat 说明处拿来的
启动命令:
docker run -d --restart=always \
-p 127.0.0.1:2376:2375 \
-v /var/run/docker.sock:/var/run/docker.sock \
alpine/socat \
tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock
访问:http://127.0.0.1:2376/info 出现一段有详细信息的json说明就没有问题。
ps:不推荐这种方式,因为docker 界面上显示警告信息,说socat m1不支持。。容易奔溃。但是用上面的方式的话,每次都得命令输入,还不能关闭,肯定没有docker 界面操作来得舒服。
idea连接docker
除了输入名称,啥都不需要输入,直接就是好的。
这时候在service窗口右键刚才刚才建好的Docker 连接,点击connect,
就可以看到容器,镜像并操作了。
配置Dockfile
这个配置文件说明了,构建镜像需要什么。
#FROM openjdk:8u212-jre
FROM azul/zulu-openjdk-alpine
MAINTAINER aliyu<2557170552@qq.com>
COPY target/myframe-0.0.1-SNAPSHOT.jar /myframe-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "/myframe-0.0.1-SNAPSHOT.jar"]
ps:之前的jdk镜像拉取失败,azul/zulu-openjdk-alpine这个镜像我从docker官网找的,也不知道是不是支持m1,可以正常打包,但打出来的包会提示和m1有兼容性问题。。。
配置docker的运行配置
实现打包、构建镜像、发布docker、创建容器并运行。
ps:图片下面还有一段,需要配置运行docker run 之前需要重新编译打包项目:clean package -U -DskipTest -P test
运行配置
运行配置可以看到整个打包、构建镜像、发布docker、创建容器并运行的日志轨迹。
其他
docker中的web项目要访问主机的mysql,应该怎么配置?
实际测试过程中,容器访问宿主机mysql,宿主机地址 127.0.0.1即可
宿主机访问docker中的容器,页面输入 127.0.0.1 加配置好的映射端口即可