# image-maker-example **Repository Path**: live-demo/image-maker-example ## Basic Information - **Project Name**: image-maker-example - **Description**: TitanIDE 模板镜像定制示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-09 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在 TitanIDE 构建模板容器镜像 [English](README.md) ## 使用方法 ### 获得帮助 在 TitanIDE 制作容器镜像非常简单,请输入以下命令获得帮助信息 ```bash make help ``` ```log Usage: make help Display this help. build build container image ``` ### 编辑 Dockerfile > 以下是一个 Dockerfile 的例子,您可以直接复制到您的工作区,然后根据您的需求进行修改, 编辑 Dockerfile 比较直观, 如果需要更多帮助,请参考这里 [编写Dockerfile的最佳实践](https://dockerdocs.cn/develop/dev-best-practices/) . ```Dockerfile FROM nginx ARG icon ARG app_name ARG app_version LABEL devtools="none" LABEL metadata.icon="${icon}" LABEL metadata.type="webapp" LABEL metadata.appname="${app_name}" LABEL metadata.version="${app_version} " LABEL metadata.home="/root" LABEL metadata.port=80 LABEL metadata.gid=0 LABEL metadata.uid=0 LABEL metadata.user="root" LABEL metadata.usesubdomain=false 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. 使用默认参数构建 ```bash make build ``` ### 创建令牌 请输入用户名和密码 为了将制作好的镜像推送到您的镜像仓库,您需要登录到您的镜像仓库, TitanIDE 会事先创建一个令牌(暂时不校验对错,因此请您谨慎输入正确的用户名和密码,如果在推送过程中报错,请重新执行即可) Enter username: admin Enter password: passw0rd 2. 使用指定参数构建 ```bash make build tag=hub.example.com/foo/bar:v1.0.0 ``` 构建完成后将会输出完整的镜像地址,请复制出来粘贴到模板创建或修改页面的模板镜像处保存即可使用。 ```log ...... 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 ```