Help us learn about your current experience with the documentation. Take the survey.

教程:创建支持任意用户 ID 的自定义工作区镜像

本教程将指导您创建支持任意用户 ID 的自定义工作区镜像。 完成后,您可以将此自定义镜像与在 GitLab 中创建的任何 workspace 一起使用。

要创建支持任意用户 ID 的自定义工作区镜像:

  1. 创建基础 Dockerfile
  2. 添加对任意用户 ID 的支持
  3. 构建自定义工作区镜像
  4. 将自定义工作区镜像推送到 GitLab 容器注册表
  5. 在 GitLab 中使用自定义工作区镜像

开始之前

您需要以下内容:

  • 拥有在 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 后,您就可以构建自定义工作区镜像了:

  1. 在您创建 Dockerfile 的目录中运行以下命令:

    docker build -t my-gitlab-workspace .

    根据您的网络连接和系统速度,这可能需要几分钟时间。

  2. 构建过程完成后,在本地测试镜像:

    docker run -ti my-gitlab-workspace sh

您现在应该有权限以 gitlab-workspaces 用户身份运行命令。完美!您的镜像 在本地运行正常。接下来,您将使其在 GitLab 中可用。

将自定义工作区镜像推送到 GitLab 容器注册表

将您的自定义工作区镜像推送到 GitLab 容器注册表,以便在您的项目中使用:

  1. 登录您的 GitLab 账户:

    docker login registry.gitlab.com
  2. 使用 GitLab 容器注册表 URL 为镜像打标签:

    docker tag my-gitlab-workspace registry.gitlab.com/your-namespace/my-gitlab-workspace:latest

    请记住将 your-namespace 替换为您的实际 GitLab 命名空间。

  3. 将镜像推送到 GitLab 容器注册表:

    docker push registry.gitlab.com/your-namespace/my-gitlab-workspace:latest

    根据您的网络连接速度,此上传可能需要一些时间。

干得好!您的自定义工作区镜像现在已安全存储在 GitLab 容器注册表中 并可以使用了。

在 GitLab 中使用自定义工作区镜像

最后一步,您将配置项目以使用您的自定义工作区镜像:

  1. 更新项目 .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 一起使用。

相关主题