当前位置:   article > 正文

IDEA制作docker镜像推送到docker hub和阿里云镜像仓库_idea docker 阿里云

idea docker 阿里云

学习如何本地制作镜像推送到远程仓库管理,希望可以帮到有需要的人


准备工作:

        1.注册docker hub账号,下载Docker Desktop Windows版本

        2.注册阿里云账号,开通容器镜像服务个人版

注意事项

Docker Desktop的安装教程网上有很多,这里不做教程,这里提醒一点避免安装的时候遇到坑,Docker Desktop安装时会默认勾选使用wsl2,如果你是win11安装可以勾选上,win11对这个的支持很友好,只需要一行代码就可以完成安装,但是如果你是win10,建议把这个取消掉,因为我笔记本是win11勾上后安装后能正常使用,但是我家里的台式就不行,自己安装上的wsl始终和Docker Desktop有冲突,本身我也只是用来管理镜像,用不上wsl,所以win10我就把这个安装项取消掉了。


登录Docker Desktop

这里可以去做一些配置,可以做一些加速,我没有配置,可以正常上传,有需要的另行查看文章

IDEA使用docker插件

我用的23最新版idea是自带docker插件的,老版本的可能需要自己去插件市场装docker插件

docker desktop正常开启的话,在idea配置的docker里可以直接连接上,看到最下方success就是可以了

IDEA使用Maven打包

我以spring boot项目演示,需要注意的是使用maven打包的时候注意排除掉配置文件,镜像内不要有敏感信息,配置都用外部挂载的方式

打包后在target下看到jar包,顺便检查下有没有排除配置文件,这里可以看到只有一个主配置在,具体的环境配置信息application-admin-prod.yml是排除了的

IDEA制作镜像

在项目根目录编写Dockerfile,不懂的可以简单学一下,知道基础的编写规则就可以

贴一份具体内容

  1. # 使用官方的 OpenJDK 8 镜像作为基础镜像
  2. FROM openjdk:8-jdk
  3. ENV LANG=C.UTF-8
  4. ENV LC_ALL=C.UTF-8
  5. # 设置工作目录
  6. WORKDIR /app
  7. # 复制构建好的 JAR 文件到工作目录
  8. COPY target/*.jar /app/app.jar
  9. # 安装vim
  10. RUN apt-get update && apt-get install -y vim
  11. # 暴露应用程序的端口
  12. EXPOSE 8080
  13. # 添加作者信息
  14. LABEL maintainer="docker"
  15. # 定义启动命令
  16. CMD ["java", "-jar", "app.jar"]

这里有个坑需要主要,如果打完镜像运行报错:java.io.IOException: Problem reading font data这个问题说明你程序里用到读取字体的功能,一般就是图形验证码功能,网上的Dockerfile一般是写的FROM openjdk:8-jdk-alpine,这是比较轻量级的,直接使用openjdk:8-jdk可解决问题。

接着把Dockerfile和docker关联上,选择Edit Config....

镜像名和容器名看着填写,选择apply,然后在这里点Run也可以,在外面点运行也可以

运行后在Services能够看到控制台信息

镜像制作完成后会直接在容器里运行,可以顺便看看有没有问题,因为没有配置文件所以报错redis连接不上,镜像没有问题

接着打开Docker Desktop可以看自己的镜像

上传镜像到Docker hub

没有仓库的先创建一个库,个人版只有一个私人库,所以还是用公共库吧,所以制作的镜像一定要排除敏感信息。

在idea修改镜像名字,格式是你的docker hub账号+仓库名

复制上面马赛克的一段在idea里填写到第三步,最后的latest版本号看个人改不改

这里可以配置推送镜像的地址,但是我没配置连接所以就没有从这里推送,应该说配置了但是连不上,就到Docker Desktop去推送了,会看到一个新的名字的镜像,点击推送

然后就可以,去你远程仓库看看,这一步就完成了。

上传镜像到阿里云镜像仓库

前面创建好阿里云账号并且开通容器服务个人版(免费),创建好自己的仓库名字

点进去后下面是有操作指南的,都是命令也很简单,这里提供一个bat脚本,直接执行就可以

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 查看镜像ID
  4. docker images
  5. set ALIYUN_USERNAME=你的阿里云账号
  6. set ALIYUN_REGISTRY=registry.cn-hangzhou.aliyuncs.com(这里改成自己的仓库地域)
  7. set NAMESPACE=你的命名空间
  8. REM 预定义的镜像仓库名称列表
  9. set IMAGE_NAMES=kingenjoy_admin-web kingenjoy_admin-api kingenjoy_front-api
  10. REM 提示用户选择一个镜像名称
  11. echo "请选择一个镜像名称:"
  12. set INDEX=1
  13. for %%i in (%IMAGE_NAMES%) do (
  14. echo !INDEX!. %%i
  15. set /a INDEX+=1
  16. )
  17. REM 提示用户输入选择的数字
  18. set /p INDEX="选择: "
  19. REM 根据用户选择获取相应的镜像名称
  20. set IMAGE_NAME=
  21. set INDEX_COUNTER=1
  22. for %%i in (%IMAGE_NAMES%) do (
  23. if !INDEX_COUNTER! equ %INDEX% set IMAGE_NAME=%%i
  24. set /a INDEX_COUNTER+=1
  25. )
  26. REM 提示用户输入镜像ID
  27. set /p IMAGE_ID="请输入镜像ID: "
  28. REM 生成基于时间戳的镜像版本
  29. for /f "delims=" %%a in ('wmic os get localdatetime ^| find "."') do set datetime=%%a
  30. set IMAGE_VERSION=%datetime:~0,4%%datetime:~4,2%%datetime:~6,2%%datetime:~8,2%%datetime:~10,2%%datetime:~12,2%%datetime:~15,3%
  31. REM 登录阿里云容器镜像服务
  32. docker login --username=%ALIYUN_USERNAME% %ALIYUN_REGISTRY%
  33. REM 打标签
  34. docker tag %IMAGE_ID% %ALIYUN_REGISTRY%/%NAMESPACE%/%IMAGE_NAME%:%IMAGE_VERSION%
  35. REM 推送镜像到阿里云容器镜像服务
  36. docker push %ALIYUN_REGISTRY%/%NAMESPACE%/%IMAGE_NAME%:%IMAGE_VERSION%
  37. echo "镜像上传完成。"
  38. echo "IMAGE_VERSION: %IMAGE_VERSION%"

把前面几行换成自己的就可以,然后用终端打开运行脚本根据提示选择上传的仓库和输入镜像ID,最后输入上传密码就可以了

完成。

有条件的可以把这一套配置到Jenkins实现的自动化,我是个人使用,服务器的配置也不够再搭建一个Jenkins了,所以就在本地完成镜像制作和推送。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/39311
推荐阅读
相关标签
  

闽ICP备14008679号