IDEA使用Docker插件构建镜像
IDEA使用Docker插件构建镜像
记一次坑 第一次插件docker-maven-plugin的 配置文件中没写远程主机的地址 <dockerHost>http://192.168.128.3:2375</dockerHost>-->
在idea的setting 中设置了,以为这里不用配置了,结果掉进坑了
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>lxcuaa</imageName> <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--指定基础镜像jdk1.8--> <baseImage>openjdk:8-jdk-alpine</baseImage> <baseImage>java:8</baseImage> <!-- 镜像制作人本人信息--> <maintainer>chong@email.com</maintainer> <!-- 结合dockerfile 构建,不需要指定基础镜像,暴露端口,因为在Dockerfilr中指定--> <!--<dockerDirectory>Dockerfile的路径</dockerDirectory>--> <!--指定登录容器默认到/目录--> <workdir>/</workdir> <!-- 构建镜像的时候需要在镜像容器中运行的 linux命令 --> <!-- <runs>--> <!-- <run>--> <!-- </run>--> <!-- </runs>--> <!--查看我们的java版本--> <cmd>["java", "-version"]</cmd> <!--${project.build.finalName}.jar是打包后生成的jar包的名字 -Duser.timezone=GMT+8 :设置时区同步(项目时间为东八区标准时间)--> <entryPoint>["java","-Duser.timezone=GMT+8", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!--指定远程 docker api地址(docker服务器的ip+docker的远程端口)--> <dockerHost>http://192.168.128.3:2375</dockerHost> <!--容器服务的端口(暴露的端口)--> <!-- <exposes>86</exposes>--> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <!-- <directory>${project.build.directory}</directory>--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <!-- <include>${project.build.finalName}.jar</include>--> <include>cccdemo.jar</include> </resource> </resources> </configuration> </plugin>
一、开启Docker远程访问
如果使用idea编辑器的话,可以使用docker插件来远程使用服务器(虚拟机)上的docker,简单方便快捷的使用docker,更重要的是使用插件可以实现项目的一键部署,当然这还需要一些简单的配置。
默认的dokcer是不支持远程访问的,需要加点配置,开启Docker的远程访问
-
#修改Docker服务文件,需要先切换到root用户
-
vim /lib/systemd/system/docker.service
-
#注释掉"ExecStart"这一行,并添加下面这一行信息
-
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
重新加载配置文件
-
#重新加载配置文件
-
systemctl daemon-reload
-
#重启服务
-
systemctl restart docker.service
-
#查看配置的端口号(2375)是否开启(防火墙必须放开docker远程端口)
-
二、连接docker
使用idea的docker插件连接docker,idea默认已经下载过docker插件了,如果没有的话,需要在idea下载docker插件
点击idea的设置选项(file --> setting -> docker),新建连接
连接成功之后就可以使用服务器(虚拟机)上的docker了
三、镜像的拉取
idea可以通过可视化的方式拉取镜像,不用自己去敲命令
有时候会出现拉取的时间超时的情况,可以配置一下国内的镜像获取阿里云的加速器
四、容器的创建与运行
创建并且运行docker容器
创建成功之后可以看到新创建的容器,也可以在服务器(虚拟机)上用docker命令查看
重启容器、停止容器和删除容器等操作
五、docker一键部署springboot项目
传统的docker部署springboot项目,需要自己手动配置Dockerfile文件,还需要将生成的jar包跟Dockerfile文件一起上传到服务器,整个流程下来很麻烦,如果用idea的docker插件就可以实现一键部署springboot项目,简单方便。
maven项目中:
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>lxcuaa</imageName> <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--指定基础镜像jdk1.8--> <baseImage>openjdk:8-jdk-alpine</baseImage> <baseImage>java:8</baseImage> <!-- 镜像制作人本人信息--> <maintainer>chong@email.com</maintainer> <!-- 结合dockerfile 构建,不需要指定基础镜像,暴露端口,因为在Dockerfilr中指定--> <!--<dockerDirectory>Dockerfile的路径</dockerDirectory>--> <!--指定登录容器默认到/目录--> <workdir>/</workdir> <!-- 构建镜像的时候需要在镜像容器中运行的 linux命令 --> <!-- <runs>--> <!-- <run>--> <!-- </run>--> <!-- </runs>--> <!--查看我们的java版本--> <cmd>["java", "-version"]</cmd> <!--${project.build.finalName}.jar是打包后生成的jar包的名字 -Duser.timezone=GMT+8 :设置时区同步(项目时间为东八区标准时间)--> <entryPoint>["java","-Duser.timezone=GMT+8", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!--指定远程 docker api地址(docker服务器的ip+docker的远程端口)--> <dockerHost>http://192.168.128.3:2375</dockerHost> <!--容器服务的端口(暴露的端口)--> <!-- <exposes>86</exposes>--> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <!-- <directory>${project.build.directory}</directory>--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <!-- <include>${project.build.finalName}.jar</include>--> <include>cccdemo.jar</include> </resource> </resources> </configuration> </plugin>
ok,接下来只要先点击clean清除之前的所有打包的文件,然后再点击package打包文件即可完成镜像的构建,真正的一键部署
建,真正的一键部署
到此镜像构建成功,接下来只要创建容器跑起来即可
通过ip访问