Skip to main content

컨테이너에서 작업 실행

컨테이너를 사용하여 작업의 단계를 실행합니다.

Note

GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

개요

jobs.<job_id>.container를 사용하여 컨테이너를 아직 지정하지 않은 작업에서 모든 단계를 실행하는 컨테이너를 만듭니다. 스크립트 및 컨테이너 작업을 둘 다 사용하는 단계가 있는 경우 컨테이너 작업은 동일한 볼륨 탑재가 있는 동일한 네트워크에서 형제 컨테이너로 실행됩니다.

container를 설정하지 않으면 단계가 컨테이너에서 실행되도록 구성된 작업을 참조하지 않는 한, 모든 단계가 runs-on으로 지정된 호스트에서 직접 실행됩니다.

Note

컨테이너 내의 run 단계에 대한 기본 셸은 bash가 아니라 sh입니다. 이 셸은 jobs.<job_id>.defaults.run 또는 jobs.<job_id>.steps[*].shell로 재정의할 수 있습니다.

예: 컨테이너 내에서 작업 실행

YAML
name: CI
on:
  push:
    branches: [ main ]
jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container:
      image: node:18
      env:
        NODE_ENV: development
      ports:
        - 80
      volumes:
        - my_docker_volume:/volume_mount
      options: --cpus 1
    steps:
      - name: Check for dockerenv file
        run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)

컨테이너 이미지만 지정하면 image 키워드를 생략해도 됩니다.

jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container: node:18

컨테이너 이미지 정의

jobs.<job_id>.container.image를 사용하여 작업을 실행하기 위한 컨테이너로 사용할 Docker 이미지를 정의합니다. 값은 Docker Hub 이미지 이름 또는 레지스트리 이름일 수 있습니다.

컨테이너 레지스트리에 대한 자격 증명 정의

이미지의 컨테이너 레지스트리에서 이미지를 끌어오기 위해 인증이 필요한 경우 jobs.<job_id>.container.credentials를 사용하여 usernamepasswordmap을 설정할 수 있습니다. 자격 증명은 docker login 명령에 제공하는 것과 동일한 값입니다.

예: 컨테이너 레지스트리에 대한 자격 증명 정의

container:
  image: ghcr.io/owner/image
  credentials:
     username: ${{ github.actor }}
     password: ${{ secrets.github_token }}

컨테이너를 통해 환경 변수 사용

jobs.<job_id>.container.env를 사용하여 컨테이너에서 환경 변수의 map을 설정합니다.

컨테이너에 네트워크 포트 노출

jobs.<job_id>.container.ports를 사용하여 컨테이너에 노출할 포트의 array를 설정합니다.

컨테이너에 볼륨 탑재

jobs.<job_id>.container.volumes를 사용하여 서비스 컨테이너에서 사용할 볼륨의 array를 설정합니다. 볼륨을 사용하여 서비스 또는 작업의 여러 단계 간에 데이터를 공유할 수 있습니다. 명명된 Docker 볼륨, 익명 Docker 볼륨 또는 호스트의 바인딩 탑재를 지정할 수 있습니다.

볼륨을 지정하려면 원본 및 대상 경로를 지정합니다.

<source>:<destinationPath>입니다.

<source>는 호스트 컴퓨터의 볼륨 이름 또는 절대 경로이며 <destinationPath>는 컨테이너의 절대 경로입니다.

예제: 컨테이너에 볼륨 탑재

volumes:
  - my_docker_volume:/volume_mount
  - /data/my_data
  - /source/directory:/destination/directory

컨테이너 리소스 옵션 설정

jobs.<job_id>.container.options를 사용하여 추가 Docker 컨테이너 리소스 옵션을 구성합니다. 옵션 목록은 “docker create 옵션”을 참조하세요.

Warning

--network--entrypoint 옵션은 지원되지 않습니다.