로컬에서 컨테이너 이미지 테스트

개발 단계에서는 배포하기 전에 로컬에서 컨테이너 이미지를 실행하고 테스트할 수 있습니다. Cloud Code 또는 로컬에서 설치된 Docker를 사용하면 Google Cloud 서비스에 대한 액세스 권한으로 로컬 실행을 포함하여 로컬에서 실행하고 테스트할 수 있습니다.

Cloud Run 에뮬레이터에서 실행

VS CodeJetBrains IDECloud Code 플러그인을 사용하면 IDE 내 Cloud Run 에뮬레이터에서 로컬에서 컨테이너 이미지를 실행하고 디버깅할 수 있습니다. 에뮬레이터를 사용하면 Cloud Run에서 실행 중인 서비스를 대표하는 환경을 구성할 수 있습니다.

CPU 및 메모리 할당과 같은 속성을 구성하고 환경 변수를 지정하고 Cloud SQL 데이터베이스 연결을 설정할 수 있습니다.

  1. VS Code 또는 JetBrains IDE용 Cloud Code를 설치합니다.
  2. IDE 내에서 로컬에서 개발 및 디버깅을 위한 안내를 따릅니다.

Docker를 사용해 로컬에서 실행

Docker를 사용해 로컬에서 컨테이너 이미지를 테스트하려면 다음 안내를 따르세요.

  1. Docker 명령어를 사용합니다.

    PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL

    IMAGE_URL을 컨테이너 이미지 참조(예를 들어 gcr.io/myproject/my-image:latest)로 바꿉니다.

    PORT 환경 변수는 애플리케이션이 HTTP 또는 HTTPS 요청을 리슨하기 위해 사용할 포트를 지정합니다. 이는 컨테이너 런타임 계약의 요구사항입니다. 이 예시에서는 포트 8080을 사용합니다.

  2. 브라우저에서 http://localhost:9090을 엽니다.

컨테이너를 처음 사용하는 경우 Docker 시작하기 가이드를 먼저 검토하는 것이 좋습니다. Docker 명령어에 대한 자세한 내용은 Docker 문서를 참조하세요.

Google Cloud 서비스에 대한 액세스 권한으로 Docker를 사용해 로컬에서 실행

Google Cloud 클라이언트 라이브러리를 사용하여 애플리케이션을 GCP 서비스와 통합하는 경우 아직 해당 서비스에 외부 액세스를 제어하기 위한 보안을 설정하지 않았다면 애플리케이션 기본 사용자 인증 정보를 사용하여 Google Cloud 서비스를 인증하도록 로컬 컨테이너를 설정할 수 있습니다.

로컬에서 실행하려면 다음 안내를 따르세요.

  1. 서비스 계정 사용자 인증 정보 생성, 검색, 구성에 대한 안내는 인증 시작하기를 참조하세요.

  2. 다음 Docker 실행 플래그는 로컬 시스템의 사용자 인증 정보 및 구성을 로컬 컨테이너에 삽입합니다.

    1. --volume(-v) 플래그를 사용하여 사용자 인증 정보 파일을 컨테이너에 삽입합니다. 이때 머신에 GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 이미 설정되었다고 가정합니다.
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. --environment(-e) 플래그를 사용하여 컨테이너 내에 GOOGLE_APPLICATION_CREDENTIALS 변수를 설정합니다.
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. 원할 경우 완전히 구성된 다음 Docker run 명령어를 사용합니다.

    PORT=8080 && docker run \
    -p 9090:${PORT} \
    -e PORT=${PORT} \
    -e K_SERVICE=dev \
    -e K_CONFIGURATION=dev \
    -e K_REVISION=dev-00001 \
    -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \
    -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \
    IMAGE_URL

    다음은 위의 예시에서 발췌한 경로입니다.

    /tmp/keys/FILE_NAME.json
    이 경로는 컨테이너 내에 사용자 인증 정보를 배치할 합리적인 위치입니다.

    하지만 다른 디렉터리 위치도 사용 가능합니다. 여기서 중요한 요구사항은 GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 컨테이너 내의 바인딩 마운트 위치와 일치해야 한다는 것입니다.

    또한 일부 Google Cloud 서비스에서는 프로덕션 성능 및 데이터에서 로컬 문제 해결을 격리하기 위해 대체 구성을 사용할 수 있습니다.

다음 단계

빌드된 컨테이너를 배포하는 방법은 서비스 배포를 참조하세요.