チュートリアル任意のユーザーIDをサポートするカスタムワークススペースイメージの作成

フラグ: セルフマネージドGitLabでは、デフォルトでこの機能が利用可能です。この機能を隠すには、管理者がremote_development_feature_flagという機能フラグを無効にします。GitLab.comでは、この機能は利用可能です。この機能はまだ本番環境では使用できません。

caution
この機能はベータ版であり、予告なく変更される場合があります。フィードバックを残すには、フィードバックイシューをご覧ください。

このチュートリアルでは、任意のユーザーIDをサポートするカスタムワークススペースイメージの作成方法を学びます。このカスタムイメージをGitLabで作成したワークスペースで使用することができます。

任意のユーザー ID をサポートするカスタムワークスペースイメージを作成するには、次のようにします:

  1. ベースとなるDockerfileを作成します。
  2. 任意のユーザーIDのサポートを追加
  3. カスタム・ワークスペース・イメージの構築
  4. カスタムワークスペースイメージをGitLabコンテナレジストリにプッシュします。
  5. GitLabでカスタムワークスペースイメージを使用します。

前提条件

  • コンテナイメージを作成し、GitLabコンテナレジストリにプッシュする権限を持つGitLabアカウント。
  • Dockerのインストール

ベースとなるDockerfileの作成

コンテナイメージのベースとなるDockerfileを作成するために、Docker HubのPython3.11-slim-bullseye イメージを使ってみましょう:

FROM python:3.11-slim-bullseye

次に、このベースイメージを変更します。

任意のユーザーIDのサポートを追加します。

ベース画像に任意のユーザーIDのサポートを追加するには、次のようにします:

  1. 5001 のユーザーIDを持つ新しいgitlab-workspaces ユーザーを追加します。
  2. 必要なディレクトリ権限を設定します。
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

任意のユーザーIDをサポートするようになったので、いよいよカスタムワークスペースイメージを構築します。

カスタムワークスペースイメージの構築

カスタム・ワークスペース・イメージを構築するには、以下のコマンドを実行します:

docker build -t my-gitlab-workspace .

ビルドが完了したら、ローカルでイメージをテストできます:

docker run -ti my-gitlab-workspace sh

gitlab-workspaces ユーザーとしてコマンドを実行できるはずです。

カスタムワークスペースイメージを 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
    
  3. GitLabコンテナレジストリにイメージをプッシュします:

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

カスタムワークスペースイメージをGitLabコンテナレジストリにプッシュしたら、そのイメージをGitLabで使うことができます。

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

これで準備完了です!これで、GitLabで作成したワークスペースでこのカスタムイメージを使うことができます。