- 사전 요구 사항
- 베이스 Dockerfile 작성
- 임의의 사용자 ID 지원 추가
- 사용자 정의 워크스페이스 이미지 빌드
- 사용자 정의 워크스페이스 이미지를 GitLab 컨테이너 레지스트리에 푸시
- GitLab에서 사용자 정의 워크스페이스 이미지 사용
튜토리얼: 임의의 사용자 ID를 지원하는 사용자 정의 워크스페이스 이미지 생성
이 튜토리얼에서는 임의의 사용자 ID를 지원하는 사용자 정의 워크스페이스 이미지를 생성하는 방법을 배우게 됩니다. 그런 다음 이 사용자 정의 이미지를 GitLab에서 생성하는 워크스페이스와 함께 사용할 수 있습니다.
임의의 사용자 ID를 지원하는 사용자 정의 워크스페이스 이미지를 생성하려면 다음을 수행해야 합니다.
- 베이스 Dockerfile 작성.
- 임의의 사용자 ID 지원 추가.
- 사용자 정의 워크스페이스 이미지 빌드.
- 사용자 정의 워크스페이스 이미지를 GitLab 컨테이너 레지스트리에 푸시.
- GitLab에서 사용자 정의 워크스페이스 이미지 사용.
사전 요구 사항
- GitLab 계정 및 GitLab 컨테이너 레지스트리에 컨테이너 이미지를 생성하고 푸시할 수 있는 권한
- Docker 설치
베이스 Dockerfile 작성
컨테이너 이미지용 베이스 Dockerfile을 생성하려면 Docker Hub에서 Python 3.11-slim-bullseye
이미지를 사용합시다:
FROM python:3.11-slim-bullseye
다음으로 이 베이스 이미지를 수정하겠습니다.
임의의 사용자 ID 지원 추가
베이스 이미지에 임의의 사용자 ID를 지원하기 위해 다음을 수행합니다.
-
gitlab-workspaces
사용자를5001
사용자 ID로 추가합니다. - 필요한 디렉토리 권한을 설정합니다.
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 컨테이너 레지스트리에 푸시하려면 다음을 수행합니다.
-
GitLab 계정에 로그인합니다:
docker login registry.gitlab.com
-
이미지에 GitLab 컨테이너 레지스트리 URL을 태깅합니다:
docker tag my-gitlab-workspace registry.gitlab.com/your-namespace/my-gitlab-workspace:latest
-
이미지를 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에서 생성하는 워크스페이스에서 사용할 수 있습니다.