개요
jobs.<job_id>.container
를 사용하여 컨테이너를 아직 지정하지 않은 작업에서 모든 단계를 실행하는 컨테이너를 만듭니다. 스크립트 및 컨테이너 작업을 둘 다 사용하는 단계가 있는 경우 컨테이너 작업은 동일한 볼륨 탑재가 있는 동일한 네트워크에서 형제 컨테이너로 실행됩니다.
container
를 설정하지 않으면 단계가 컨테이너에서 실행되도록 구성된 작업을 참조하지 않는 한, 모든 단계가 runs-on
으로 지정된 호스트에서 직접 실행됩니다.
Note
컨테이너 내의 run
단계에 대한 기본 셸은 bash
가 아니라 sh
입니다. 이 셸은 jobs.<job_id>.defaults.run
또는 jobs.<job_id>.steps[*].shell
로 재정의할 수 있습니다.
예: 컨테이너 내에서 작업 실행
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)
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
를 사용하여 username
및 password
의 map
을 설정할 수 있습니다. 자격 증명은 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
옵션은 지원되지 않습니다.