Docker 사용자 지정 이미지 샘플 - AWS CodeBuild

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Docker 사용자 지정 이미지 샘플

이 샘플은 AWS CodeBuild 및 사용자 지정 Docker 빌드 이미지(Docker Hub의 docker:dind)를 사용하여 도커 이미지를 빌드하고 실행합니다.

CodeBuild가 제공한 빌드 이미지를 Docker 지원을 통해 가 제공하는 빌드 이미지를 사용하여 Docker 이미지를 빌드하는 방법에 대한 자세한 내용은 단원을 참조하십시오.도커 샘플.

중요

이 샘플을 실행하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 CodeBuild 및 요금이 포함됩니다.AWSAmazon S3와 관련된 리소스 및 조치,AWS KMS및 CloudWatch Logs. 자세한 내용은 단원을 참조하십시오.CodeBuild 요금,Amazon S3 요금,AWS Key Management Service요금, 및Amazon CloudWatch 요금.

샘플 실행

이 샘플을 실행하려면

  1. 이 주제의 “디렉터리 구조” 및 “파일” 섹션에 설명된 대로 파일을 생성한 다음, 이를 S3 입력 버킷이나 AWS CodeCommit, GitHub 또는 Bitbucket 리포지토리에 업로드합니다.

    중요

    (root directory name)은 업로드하지 말고, (root directory name) 안에 있는 파일만 업로드하십시오.

    S3 입력 버킷을 사용하고 있는 경우, 파일을 포함하는 ZIP 파일을 생성한 다음, 이를 입력 버킷에 업로드하십시오. (root directory name)을 ZIP 파일에 추가하지 말고, (root directory name) 안에 있는 파일만 추가하십시오.

  2. AWS CodeBuild 직접 실행에 있는 단계를 수행하여 빌드 프로젝트를 생성하고, 빌드를 실행하고, 관련된 빌드 정보를 확인합니다.

    AWS CLI를 사용하여 빌드 프로젝트를 생성하는 경우, create-project 명령에 JSON 형식으로 입력하면 다음과 같이 표시될 수 있습니다. (자리 표시자는 사용자의 값으로 바꾸십시오.)

    { "name": "sample-docker-custom-image-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "docker:dind", "computeType": "BUILD_GENERAL1_SMALL", "privilegedMode": true }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
    참고

    기본적으로 Docker 컨테이너는 모든 디바이스에 대한 액세스를 허용하지 않습니다. 권한 모드는 빌드 프로젝트의 Docker 컨테이너에 모든 디바이스에 대한 액세스 권한을 부여합니다. 자세한 내용은 Docker 문서 웹 사이트의 런타임 권한 및 Linux 기능을 참조하십시오.

  3. 빌드 결과를 확인하려면 빌드 로그에서 Hello, World! 문자열에 대해 찾아보십시오. 자세한 정보는 빌드 세부 정보 보기을 참조하십시오.

디렉터리 구조

이 샘플에서는 다음 디렉터리 구조를 가정합니다.

(root directory name) ├── buildspec.yml └── Dockerfile

Files

이 샘플에 사용되는 운영 체제의 기본 이미지는 Ubuntu입니다. 샘플은 이러한 파일을 사용합니다. buildspec 파일에 참조된 OverlayFS 스토리지 드라이버에 대한 자세한 내용은 도커 웹사이트의 OverlayFS 스토리지 드라이버 사용을 참조하십시오.

buildspec.yml((root directory name)에 있음)

version: 0.2 phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done" pre_build: commands: - docker build -t helloworld . build: commands: - docker images - docker run helloworld echo "Hello, World!"
참고

기본 운영 체제가 Alpine Linux인 경우 buildspec.yml에서 -t 인수를 timeout에 추가합니다.

- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

Dockerfile((root directory name)에 있음)

FROM maven:3.3.9-jdk-8 RUN echo "Hello World"

관련 리소스