튜토리얼: 임의의 사용자 ID를 지원하는 사용자 정의 워크스페이스 이미지 생성

이 튜토리얼에서는 임의의 사용자 ID를 지원하는 사용자 정의 워크스페이스 이미지를 생성하는 방법을 배우게 됩니다. 그런 다음 이 사용자 정의 이미지를 GitLab에서 생성하는 워크스페이스와 함께 사용할 수 있습니다.

임의의 사용자 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를 지원하기 위해 다음을 수행합니다.

  1. gitlab-workspaces 사용자를 5001 사용자 ID로 추가합니다.
  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에서 생성하는 워크스페이스에서 사용할 수 있습니다.