데이터 재사용 가능.작업.엔터프라이즈-깃허브-호스티드-러너 %}
USER
Docker 작업은 기본 Docker 사용자(루트)에 의해 실행되어야 합니다.
USER 디렉터리에 액세스할 수 없으므로 Dockerfile에서 GITHUB_WORKSPACE 지침을 사용하지 마세요. 자세한 내용은 Docker 문서에서 변수 참조 및 USER 참조를 참조하세요.
FROM
`Dockerfile`의 첫 번째 명령은 Docker 기본 이미지를 선택하는 `FROM`이어야 합니다. 자세한 내용은 Docker 설명서의 [FROM 참조](https://docs.docker.com/engine/reference/builder/#from)를 참조하세요.
`FROM` 인수를 설정할 때 몇 가지 모범 사례는 다음과 같습니다.
- 공식 Docker 이미지를 사용하는 것이 좋습니다. 예를 들어
python또는ruby입니다. - 버전 태그가 있는 경우 주 버전과 함께 사용하는 것이 좋습니다. 예를 들어
node:10대신node:latest을 사용합니다. -
[Debian](https://www.debian.org/) 운영 체제를 기반으로 Docker 이미지를 사용하는 것이 좋습니다.
WORKDIR
GitHub는 GITHUB_WORKSPACE 환경 변수에 작업 디렉터리 경로를 설정합니다.
WORKDIR에서 Dockerfile 명령을 사용하지 않는 것이 좋습니다. 작업이 실행되기 전에 GitHub는 Docker 이미지의 해당 위치에 있던 모든 항목 위에 GITHUB_WORKSPACE 디렉터리를 탑재하고 GITHUB_WORKSPACE를 작업 디렉터리로 설정합니다. 자세한 내용은 Docker 설명서의 변수 참조 및 WORKDIR 참조를 참조하세요.
ENTRYPOINT
작업의 메타데이터 파일에 entrypoint을 정의하면 ENTRYPOINT에 정의된 Dockerfile를 재정의합니다. 자세한 내용은 메타데이터 구문 참조을(를) 참조하세요.
Docker ENTRYPOINT 명령에는 shell 형식과 exec 형식이 있습니다. Docker ENTRYPOINT 문서에서는 __ 명령의 ENTRYPOINT 형식을 사용하는 것이 좋습니다.
exec 및 shell 형식에 대한 자세한 내용은 Docker 문서의 ENTRYPOINT 참조를 참조하세요.
Dockerfile에서 진입점을 지정하는 데 WORKDIR을 사용하면 안 됩니다. 대신 절대 경로를 사용해야 합니다. 자세한 내용은 WORKDIR을 참조하세요.
_
_ 명령의 `ENTRYPOINT` 형식을 사용하도록 컨테이너를 구성하면 작업의 메타데이터 파일에 구성된 `args`가 명령 셸에서 실행되지 않습니다. 작업의 `args`에 환경 변수가 포함된 경우 변수는 대체되지 않습니다. 예를 들어 다음 _exec_ 형식을 사용하면 `$GITHUB_SHA`에 저장된 값이 출력되지 않고 대신 `"$GITHUB_SHA"`가 출력됩니다.
ENTRYPOINT ["echo $GITHUB_SHA"]
변수를 대체하길 원하면 shell 형식을 사용하거나 셸을 직접 실행하세요. 예를 들어 다음 exec 형식을 사용하면 셸을 실행하여 GITHUB_SHA 환경 변수에 저장된 값을 출력할 수 있습니다.
ENTRYPOINT ["sh", "-c", "echo $GITHUB_SHA"]
작업의 메타데이터 파일에 정의된 args를 __ 에서 ENTRYPOINT 형식을 사용하는 Docker 컨테이너에 공급하려면 entrypoint.sh 명령에서 호출하는 ENTRYPOINT라는 셸 스크립트를 만드는 것이 좋습니다.
예제 Dockerfile
# Container image that runs your code
FROM debian:9.5-slim
# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh
# Executes `entrypoint.sh` when the Docker container starts up
ENTRYPOINT ["/entrypoint.sh"]
예제 entrypoint.sh 파일
위의 예제 Dockerfile을 사용하여 GitHub는 작업의 메타데이터 파일에 구성된 args을 인수로 entrypoint.sh에 보냅니다. 시스템의 #!/bin/sh 호환 셸을 명시적으로 사용하려면 파일 위쪽의 entrypoint.sh셔뱅을 추가합니다.
#!/bin/sh
# `$#` expands to the number of arguments and `$@` expands to the supplied `args`
printf '%d args:' "$#"
printf " '%s'" "$@"
printf '\n'
코드는 실행 파일이어야 합니다. 워크플로에서 사용하기 전에 entrypoint.sh 파일에 execute 권한이 있는지 확인하세요. 다음 명령을 사용하여 터미널에서 권한을 수정할 수 있습니다.
chmod +x entrypoint.sh
`ENTRYPOINT` 셸 스크립트를 실행할 수 없으면 다음과 유사한 오류가 수신됩니다.
Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/entrypoint.sh\": permission denied": unknown
CMD
작업의 메타데이터 파일에 args을 정의하면 args가 CMD에 지정된 Dockerfile 명령을 재정의합니다. 자세한 내용은 메타데이터 구문 참조을(를) 참조하세요.
`CMD`에서 `Dockerfile`를 사용하는 경우 다음 지침을 따르세요.
데이터 재사용 가능 작업.dockerfile-가이드라인 %}
지원되는 Linux 기능
GitHub Actions은(는) Docker에서 지원하는 기본 Linux 기능을 지원합니다. 기능은 추가하거나 제거할 수 없습니다. Docker에서 지원하는 기본 Linux 기능에 대한 자세한 내용은 Docker 설명서의 Linux 커널 기능을 참조하세요. Linux 기능에 대한 자세한 내용은 Linux man-page의 Linux 기능 개요를 참조하세요.