教程:创建支持任意用户 ID 的自定义工作区镜像
本教程将指导您创建支持任意用户 ID 的自定义工作区镜像。 完成后,您可以将此自定义镜像与在 GitLab 中创建的任何 workspace 一起使用。
要创建支持任意用户 ID 的自定义工作区镜像:
开始之前
您需要以下内容:
- 拥有在 GitLab 容器注册表中创建和推送容器镜像权限的 GitLab 账户。
- 在本地机器上安装了 Docker。
创建基础 Dockerfile
让我们首先为容器镜像创建一个基础 Dockerfile。使用 Docker Hub 上的 Python
3.11-slim-bullseye 镜像作为起点:
FROM python:3.11-slim-bullseye太好了!您已经为自定义工作区镜像创建了基础。接下来,添加启用任意用户 ID 支持的代码。
添加对任意用户 ID 的支持
接下来,您将向基础镜像添加对任意用户 ID 的支持。 这确保您的工作区能在 GitLab 中运行。
要添加一个 ID 为 5001 的新 gitlab-workspaces 用户,并为他们分配必要的
目录权限,请将以下代码添加到您的 Dockerfile 中:
RUN useradd -l -u 5001 -G sudo -md /home/gitlab-workspaces -s /bin/bash -p gitlab-workspaces gitlab-workspaces
ENV HOME=/home/gitlab-workspaces
WORKDIR $HOME
RUN mkdir -p /home/gitlab-workspaces && chgrp -R 0 /home && chmod -R g=u /etc/passwd /etc/group /home
USER 5001构建自定义工作区镜像
完成 Dockerfile 后,您就可以构建自定义工作区镜像了:
-
在您创建 Dockerfile 的目录中运行以下命令:
docker build -t my-gitlab-workspace .根据您的网络连接和系统速度,这可能需要几分钟时间。
-
构建过程完成后,在本地测试镜像:
docker run -ti my-gitlab-workspace sh
您现在应该有权限以 gitlab-workspaces 用户身份运行命令。完美!您的镜像
在本地运行正常。接下来,您将使其在 GitLab 中可用。
将自定义工作区镜像推送到 GitLab 容器注册表
将您的自定义工作区镜像推送到 GitLab 容器注册表,以便在您的项目中使用:
-
登录您的 GitLab 账户:
docker login registry.gitlab.com -
使用 GitLab 容器注册表 URL 为镜像打标签:
docker tag my-gitlab-workspace registry.gitlab.com/your-namespace/my-gitlab-workspace:latest请记住将
your-namespace替换为您的实际 GitLab 命名空间。 -
将镜像推送到 GitLab 容器注册表:
docker push registry.gitlab.com/your-namespace/my-gitlab-workspace:latest根据您的网络连接速度,此上传可能需要一些时间。
干得好!您的自定义工作区镜像现在已安全存储在 GitLab 容器注册表中 并可以使用了。
在 GitLab 中使用自定义工作区镜像
最后一步,您将配置项目以使用您的自定义工作区镜像:
-
更新项目
.devfile.yaml中的容器镜像:schemaVersion: 2.2.0 components: - name: tooling-container attributes: gl/inject-editor: true container: image: registry.gitlab.com/your-namespace/my-gitlab-workspace:latest请记住将
your-namespace替换为您的实际 GitLab 命名空间。
恭喜!您已成功创建并配置了支持任意用户 ID 的自定义工作区镜像。现在您可以将此自定义镜像与在 GitLab 中创建的任何 workspace 一起使用。