IDEA 集成 docker 实现远程部署

2023-09-13 08:26:35

1. docker 服务器开启远程访问

  1. 登录 docker 所在的远程服务器,使用命令vim /usr/lib/systemd/system/docker.service 修改配置文件,需注意,修改时确认自己的账户拥有相应权限

    主要操作是找到ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 这一行,注释掉,重新添加一行,在后面新增-H tcp://0.0.0.0:2375表示打开2375端口,支持远程连接 docker

    #ExecStart=/usr/bin/dockerd-H fd://--containerd=/run/containerd/containerd.sockExecStart=/usr/bin/dockerd-H tcp://0.0.0.0:2375-H unix://var/run/docker.sock
  2. 保存配置文件后需要将配置重新载入,重启 docker,可使用如下命令
    systemctl daemon-reload
    systemctl restart docker.service

2. IDEA 安装 docker 插件

  1. 一般比较新的 IDEA 都绑定了 docker 插件,如未绑定在 IDEA 的 Plugins 中搜索安装 docker 插件即可,安装完毕重启生效
    在这里插入图片描述

  2. 重启后可以通过Build,Execution,Depolyment ——> Docker 路径找到 Docker 插件,在此新增一个连接远程 Docker 的配置
    在这里插入图片描述

  3. 连接成功后,在 IDEA 插件面板中可以查看远程 docker 主机的镜像和容器,也可以查看容器运行的日志等信息
    在这里插入图片描述

3. docker 镜像构建上传

  1. 要将本地打包的 jar 构建成 docker 镜像,需要在项目 pom 文件中添加构建插件配置。如下是一个 SpringBoot 项目模块的打包配置,关键点如下:

    1. 构建一个名称为nathan-api 的 jar 包,首先添加spring-boot-maven-plugin 插件
    2. 添加一个docker-maven-plugin 插件,配置 docker 镜像的各个关键属性。注意,这个插件会下载com.spotify.docker-maven-plugin jar 包,如下载出错更换几个版本试试, 版本列表可参考Maven 中央仓库
    <build><finalName>nathan-api</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.2</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.1.0</version><!--将插件绑定在某个phase执行--><executions><execution><id>build-image</id><!--用户只需执行mvnpackage ,就会自动执行mvn docker:build--><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--指定docker文件目录--><dockerDirectory>${project.basedir}/docker</dockerDirectory><!--指定生成的镜像名--><imageName>${project.artifactId}</imageName><!--指定标签--><imageTags><imageTag>latest</imageTag></imageTags><!--指定远程 docker api地址--><dockerHost>http://xxx.168.146.63:2375</dockerHost><!-- 这里是复制 jar 包到 docker 容器指定目录配置--><resources><resource><targetPath>/</targetPath><!--jar 包所在的路径  此处配置的 即对应 target 目录--><directory>${project.build.directory}</directory><!-- 需要包含的 jar包 ,这里对应的是Dockerfile 中添加的文件名--><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins></build>
  2. 上一步骤中在 docker 的 maven 插件中配置了 docker 文件的目录,指定的是模块根目录下的docker 文件夹,则创建一个与 src 平级的名称为 docker 的目录,在其中新建一个名称为Dockerfile 的文件,其内容如下:

    FROM java:8
    VOLUME/tmp
    # 将打包好的 jar 复制到 app.jar 中
    ADD nathan-api.jar app.jar
    EXPOSE20561
    # 以下为 jar 包启动命令配置
    ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+8","-jar","app.jar"]
  3. 经过以上配置,已经将构建 docker 镜像的动作绑定到了 maven 的package 打包命令,则执行打包即可

    笔者在这一步遇到过ADD failed: file not found in build context or excluded by .dockerignore报错,主要问题是没有找到Dockerfile 文件中 ADD 命令需复制的源文件。出现这个报错首先检查Dockerfile文件配置的文件路径是否正确,其次检查实际打包的 jar 名称是否与Dockerfile配置的文件名称相同。笔者检查配置,确认没有路径和名称错误,最后 clean 重启几次 IDEA 后又好了。不要问为什么,问就是玄学

    在这里插入图片描述

  4. docker 镜像构建好之后,右击镜像文件可以选择创建容器。创建新的容器最简单的步骤是为容器命名,然后添加宿主机到容器的端口映射,创建成功后容器会自动运行
    在这里插入图片描述

  • 作者:谈谈1974
  • 原文链接:https://blog.csdn.net/weixin_45505313/article/details/118486884
    更新时间:2023-09-13 08:26:35