模板镜像制作

在 TitanIDE 制作模板镜像

在 TitanIDE 构建模板容器镜像

English

使用方法

当您通过 TemplateMaker 创建项目,打开工作区后,会有两个例子供您参考,分别是 desktopapp-calc 和 webapp-nginx。其中 desktopapp-calc 演示了如何制作 Linux 桌面应用模板镜像,webapp-nginx 演示了然后制作网页应用模板镜像。

获得帮助

在 TitanIDE 制作容器镜像非常简单,进入相应的示例模板目录下,输入以下命令获得帮助信息


# 以 webapp-nginx 为例

cd webapp-nginx 

make help
Usage:
  make <target>
  help             Display this help.
  build            build container image

创建令牌

为了将制作好的镜像推送到您的镜像仓库,您需要登录到您的镜像仓库, TitanIDE 在构建镜像前会事先创建一个令牌(暂时不校验对错,因此请您谨慎输入正确的用户名和密码,如果在推送过程中报错,请添加 make 参数 force=true 再重新执行即可)

  1. 登录到 Makefile 默认的仓库,用户:admin,地址:titan.hub:5000

请输入用户名和密码

make

Enter username: admin
Enter password: passw0rd
  1. 指定仓库地址
make build username=your-username registry=titan.hub:5000

编辑 Dockerfile

编辑 Dockerfile 比较直观, 如果需要更多帮助,请参考这里 编写Dockerfile的最佳实践 .

# 基础镜像,从 Makefile 入参获取,默认镜像库未 titan.hub:5000/titanide
ARG from_hub
FROM ${from_hub}nginx:latest

# 基础信息,应用图标,名称,版本。从 Makefile 入参获取
ARG icon
ARG app_name
ARG app_version

LABEL metadata.icon="${icon}"
LABEL metadata.appname="${app_name}"
LABEL metadata.version="${app_version} "

# 维护者信息
LABEL maintainer="John Deng <john.deng@outlook.com>"

# 注意:如果您是基于现有模板定制的镜像,那么以下信息可以去除

# 右侧工具栏,数据类型为逗号隔开(逗号后面不能有空格)的字符数组,有效值又 file,git,port,service 具体查看 README
LABEL devtools="none"

# 应用类型,有效值有 webapp, desktopapp,二者选其一
LABEL metadata.type="webapp"

# HOME 目录
LABEL metadata.home="/home/nginx"

# Linux 用户唯一标识。
LABEL metadata.gid=1000

# Linux 用户组唯一标识。
LABEL metadata.uid=1000

# Linux 用户名。
LABEL metadata.user="nginx"

# 应用端口,如果是 webapp,则需要指定应用端口
LABEL metadata.port=8080

# 设置 true 或 false 指定访问应用的时候使用子域名或子路径访问服务, 例如使用子域名 app-foo-bar.example.com 或子路径 example.com/app/foo/bar。
LABEL metadata.usesubdomain=false

# 设置 true 或 false 指定访问应用的时候告诉网关使用子路径且重写上游应用的子路径或根路径。例如访问 example.com/app/foo/bar, 网关会重写上游路径 '/app/foo/bar' 或 '/' 。
LABEL metadata.rewritesubpath=false

# 启动应用
CMD ["nginx", "-g", "daemon off;"]

如果您

如果您需要构建 TitanIDE 的模板容器镜像,那么请注意以下几点:

  1. 上传一个 48x48 的模板图标到 Dockerfile 所在的工作区且命名为 icon.svg 或 icon.png, 否则您需要在构建时通过参数指定图标文件名称, 如 icon=customized-icon-file.svg。
  2. 如 icon 一样, app_name 和 app_version 这两个参数也是由 Makefile 来处理, 您在执行 make 的时候,Makefile 会从 git 获取版本和名称,请不要修改他们.
  3. 其他的标签(Labels)将在下表描述,

标签:

Label Description Example
devtools 在右侧栏展示的开发工具列表, 请用英文的逗号隔开, 如: devtools=“file,git,port”; 如果您不想展示任何的开发工具,则 devtools=“none”, 如果您删除或指定为空字符串 "" 那么所以的开发工具都将展示出来,更多详情请参考下面的开发工具列表。 none
metadata.icon Base64 编码的模板图标, TitanIDE 会自动转换您上传的图标文件,您无需对这个标签做任何处理,赋值为参赛变量 ${icon} 即可。 ${icon}
metadata.appname 应用名称。 vscode
metadata.version 应用版本。 v1.0.0
metadata.type 指定当前镜像的类别, TitanIDE 有效的类别有: webapp, dektopapp。如果您欲构建传统桌面应用,如 Postman 为 dektopapp;如果网页应用则为 webapp, 如 VS Code webapp
metadata.home Linux home 目录。 /home/ide
metadata.port 容器内默认启动应用所监听的端口,TitanIDE 将通过这个端口对外提供服务。 8080
metadata.uid Linux 用户唯一标识。 1000
metadata.gid Linux 用户组唯一标识。 1000
metadata.user Linux 用户名。 Ide
metadata.usesubdomain 设置 true 或 false 指定访问应用的时候使用子域名或子路径访问服务, 例如使用子域名 app-foo-bar.example.com 或子路径 example.com/app/foo/bar。 false
metadata.rewritesubpath 设置 true 或 false 指定访问应用的时候告诉网关使用子路径且重写上游应用的子路径或根路径。例如访问 example.com/app/foo/bar, 网关会重写上游路径 ‘/app/foo/bar’ 或 ‘/’ 。 false

Dev Tools:

Dev Tool Value Description Remark
file 文件上传工具。
git 代码仓库管理工具,当前仅支持克隆。
port 端口列表
service 服务列表
none 以上开发工具均不展示
"" 展示所有开发工具

构建容器镜像

我们假设您已经阅读了以上操作指引,那么接下来您将可以通过一行命令来构建模板容器镜像了。

  1. 使用默认参数构建
make build
  1. 使用指定参数构建
make build tag=hub.example.com/foo/bar:v1.0.0

构建完成后将会输出完整的镜像地址,请复制出来粘贴到模板创建或修改页面的模板镜像处保存即可使用。

......
INFO[0005] Pushing image to titan.hub:5000/demo/nginx-v3:v20221204-534bec8 
INFO[0045] Pushed titan.hub:5000/demo/nginx-v3@sha256:e79c8709e0b4a1dafa19f4c7ee865fcf46262b6cdf01bcb870f2e26a7575529b 
2022-12-04T19:16:02 info pushed titan.hub:5000/demo/nginx-v3:v20221204-534bec8
August 28, 2024: clean up (6b8fae3)