当前位置: 首页 > news >正文

01_使用Docker将Coding上项目部署到k8s平台

01_使用Docker将Coding上项目部署到k8s平台

一、将Coding代码拉取到本地

1.1 在本地 Git 登录自己的 Coding 账号(使用SSH或者GPA公钥均可)

  1. 使用SSH方式登录

在本地生成SSH令牌

ssh-keygen -t rsa -C '账号绑定邮箱'

-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。

复制账户的主目录下的 .ssh 文件夹下的 xxx.pub 文件(该文件为公钥)里的内容到 Coding 的账号设置的SSH公钥内。

  • Windows系统路径在 C:\Users\用户\.ssh\

在本地运行首次连接时的公钥认证命令:

ssh -T git@e.coding.net
  1. 使用GPA公钥方式登录

这里省略这种方式。

1.2 初始化一个本地 Git 仓库

在本地创建一个文件夹,然后进入该文件夹内,使用如下命令将该文件夹初始化为 Git 仓库

git init

1.3 在本仓库内,拉取远程项目

git pull git@e.coding.net:xxx.git

需要注意的是,使用SSH登录,只能使用SSH方式拉取代码,无法使用HTTP方式拉取。

二、将项目打包为jar包

使用IDEA或者命令行等方式,将项目打包为jar包,如:使用Maven的Clean、Package。

三、将jar包打包为docker镜像

注意:将jar包打包为docker镜像时,需要编写dockerfile文件简化打包过程。

dockerfile文件编写示例:

# FROM 指定使用哪个镜像作为基准
FROM [docker.m.daocloud.io/(可写)]openjdk:8u191-jdk-alpine

# 创建目录, 并设置该目录为工作目录
RUN mkdir -p /xxx
WORKDIR /xxx

# 复制文件到镜像中
COPY target/aaa-1.0.jar aaa.jar

# 设置时区
ENV TZ=Asia/Shanghai

# 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV JAVA_OPTS="-Xms300m -Xmx300m -Djava.security.egd=file:/dev/./urandom"

# 应用参数,可通过 docker run -e "ARGS=" 来设置,如 -e "ARGS=--spring.profiles.active=prod"
ENV ARGS=""

# 暴露 8080 端口
EXPOSE 8080

# 启动后端服务
CMD java ${JAVA_OPTS} -jar analyzer.jar $ARGS

使用docker进入项目下,然后执行:

docker build -t aaa:1.0 .

四、上传镜像至阿里云容器镜像仓库(ACR)

  1. 创建镜像仓库、命名空间,设置访问凭证(固定密码)

  2. 使用下述命令登录

docker login --username=<镜像仓库登录名> crpi-xxxx.cn-<个人版实例所在的地域>.personal.cr.aliyuncs.com
  1. 使用下述命令为镜像打标签
docker tag <镜像ID> crpi-xxxx.cn-<个人版实例所在地域>.personal.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称>:<镜像版本号>
  1. 使用下述命令上传镜像
docker push crpi-xxxx.cn-<个人版实例所在地域>.personal.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称>:<镜像版本号>

五、通过镜像部署到K8S上

  1. 创建集群。

  2. 在应用管理处,通过镜像创建应用

    副本数量不能设置为 0,基本配置-所需资源-内存尽力设置1G以上。

  3. 需要创建服务(Service)

    服务类型为NodePort时:

    1. 容器端口(targetPort)
      这是 Pod 内部运行的容器监听的端口,对应 Dockerfile 里 EXPOSE 的端口。
      在本项目中,Dockerfile 里暴露的是 8080,所以 targetPort: 8080。

    2. 服务端口(port)
      这是 Service 内部的端口,其他 Pod 访问该 Service 时使用这个端口。
      port 会转发流量到 targetPort,通常它们可以 相同,但不强制相同。
      在本项目中,port: 8080(可以改,但建议与 targetPort 一致,避免混淆)。

    3. 节点端口(nodePort)
      这是 Kubernetes 节点上的端口,集群外部访问 Service 时使用该端口。
      这个端口是 30000-32767 之间的一个固定端口,由 Kubernetes 分配,也可以手动指定。
      通过 < NodeIP >:nodePort,外部可以访问该应用。
      例如,可以设定 nodePort: 30080,则外部访问 http://:30080 即可访问应用。

相关文章:

  • STM32 FATFS - 在SDIO的SD卡中运行fatfs
  • Redis 缓存基础数据类型详解
  • Qt5.14.2+mingw64编译OpenCV3.4.14一次成功记录
  • 一欧元滤波器算法
  • 10、Linux C 网络编程(完整版)
  • Odoo透视图中添加自定义按钮执行后台方法
  • Python学习(二)操作列表
  • 字体格式如何解析(open-type)
  • Mysql 字段值批量自增或自减(坐标系数据,(x,y))
  • 43页可编辑PPT | 大数据管理中心设计规划方案大数据中心组织架构大数据组织管理
  • ⑧RBM(主备/主主)-二层部署案例
  • Web3.0隐私计算与云手机的结合
  • AI Agent 中的 MCP 模型上下文协议详解
  • 基于Matlab实现DCT数字水印添加提取和干扰测试
  • scGPT环境安装
  • 2025年企业级开源治理实践与思考
  • 边缘计算网关是什么?
  • JavaScript 深拷贝:手写一个简单可靠的 `deepClone` 函数
  • 2025华为软件精英挑战赛2600w思路分享
  • 互联网 Java 面试八股文汇总(2025 最新整理,持续更新)
  • 上海楼市“银四”兑现:新房市场高端改善领跑,二手房量价企稳回升
  • 司法部:加快研究制定行政执法监督条例,建立完善涉企行政执法监督长效机制
  • 首家股份行旗下AIC来了,兴银金融资产投资有限公司获批筹建
  • 现场|万米云端,遇见上博
  • 宁合两大都市圈交汇之城含山:要想身体好,常往含山跑
  • 中国证监会:帮助受关税政策影响较大的上市公司纾困解难