Skip to main content

컨테이너에서 작업 실행

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

개요

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

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

참고: 컨테이너 내의 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 옵션”을 참조하세요.

경고: --network, --entrypoint옵션은 지원되지 않습니다.