Web/기초

[Web] Google Cloud에 Docker 이미지 배포하기

luckyd8 2025. 9. 3. 12:07

 

로컬에서 실행하던 php 파일을 Docker로 패키징 후 Google Cloud Platform(GCP) 을 통해 업로드 하는 과정을 정리했다.

 

Google Cloud CLI 설치 및 로그인

1. gcloud CLI 설치

Google Cloud에 접속하여 Docker 이미지를 업로드하려면, Google Cloud CLI(gcloud CLI)를 사용하여 인증을 받아야 한다. 

만약 설치되어 있지 않다면, Google Cloud SDK 다운로드 페이지에서 다운로드하여 설치해야 한다. 

https://cloud.google.com/sdk/docs/downloads-interactive?hl=ko

 

Google Cloud CLI 설치 프로그램 사용  |  Google Cloud SDK Documentation

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Google Cloud CLI 설치 프로그램 사용 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Google Clou

cloud.google.com

 

자세한 설치 방법은 아래 블로그를 참고했다.

https://rainbound.tistory.com/entry/gcloud-CLI-%EC%84%A4%EC%B9%98-windows

 

gcloud CLI 설치 (windows)

아래에서 다운받거나 powershell 로 실행 https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe?hl=ko (New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$

rainbound.tistory.com

 

2. gcloud 로그인

Google Cloud CLI를 설치했다면, SDK 쉘 혹은 명령 프롬프트 (cmd)에 다음 명령어를 실행하여 계정에 로그인하고 인증을 받는다.

gcloud auth login

 

명령어를 실행하면 웹 브라우저가 열리고 Google 계정을 선택해 로그인하라는 메시지가 나타난다.

로그인을 완료하면, 터미널로 돌아와서 인증이 완료되었다는 메시지를 확인할 수 있다.

 

3. 프로젝트 설정

로그인 후에는 작업할 Google Cloud 프로젝트를 설정해야 한다.

gcloud config set project [YOUR_PROJECT_ID]

 

[YOUR_PROJECT_ID] 부분에는 본인의 Google Cloud 프로젝트 ID를 입력해야 한다. 

프로젝트 ID는 다음과 같이 확인 할 수 있다.

// Google Cloud에 접속 후 콘솔을 클릭 > My First Project > ID 확인

 

4. Docker CLI 인증 설정

Docker가 Google Cloud Container Registry(GCR)에 이미지를 푸시(push)할 수 있도록 인증을 설정해야 한다. 

gcloud auth configure-docker

 

이 명령어를 실행하면 Docker가 GCR (Google Cloud Container Registry ) 에 접근할 수 있는 권한을 얻게 된다.

 

 

Artifact Registry 저장소 준비

Google Cloud Artifact Registry를 사용하려면 이미지를 푸시하기 (업로드 하기) 전에 먼저 레지스트리에 저장소를 만들어야 한다. 

1. 저장소 생성

콘솔 검색창 'Artifact Registry' 검색 > 사용

 

API 및 서비스 > 저장소 만들기

 

리전 (asia-northeast3 서울) 지정 (다른 설정은 사진 참고)

 

2.  Docker 인증 설정

gcloud auth configure-docker [YOUR-REGION]-docker.pkg.dev

 

[YOUR-REGION] 부분에 본인이 선택한 저장소 리전을 입력해야 한다. 

저장소 리전은 다음과 같이 확인할 수 있다. (빨간 박스)

 

 

VM 인스턴스 구축

1. vm 인스턴스 생성

Compute Engine > VM 인스턴스 > VM 인스턴스 만들기

* 혹시 이 과정 중에 Compute Engine API 설정 창이 뜨면 사용 설정

 

리전 (asia-northeast3 서울) 지정 > OS 및 스토리지 (변경) > 운영체제 - Ubuntu 설정 

 

네트워킹 > HTTP/HTTPS 트래픽 허용 > 만들기

 

2. SSH 키 생성 및 확인

WSl 을 실행시켜 SSH 키를 생성하는 명령어를 실행한다. email은 아무 거나 상관 없다. 

ssh-keygen -t rsa -b 4096 -C "email@example.com"

 

실행 중간에 Enter... 메시지기 나오면 그냥 엔터 키 누르기 (아래 사진 참고)

 

생성한 SSH 키를 확인하기 위해 다음 명령어를 실행한다.

cat ~/.ssh/id_rsa.pub

 

문자열부터 이메일까지 전부 복사

 

생성한 인스턴스 클릭 > 수정 > (아래로 스크롤, SSH 키 섹션) > 복사한 키 붙여넣기

3. 방화벽 규칙 

VPC 네트워크 > 방화벽 > 방화벽 규칙 만들기 

 

TCP는 docker-compose.yml 에서 설정한 모든 포트를 지정해야 한다. (아래 접은 글에서 자세히 설명)

더보기

본인 docker-compose.yml 중 일부

services:
  websever:
    build: 
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:80" // 웹 서버가 실행될 포트 8080
    volumes:
      - .:/var/www/html
    depends_on:
      - db
    networks:
      - mynet
      
 
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "5000:80" // phpmyadmin이 실행될 포트 5000
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      PMA_PASSWORD: 'root'
    depends_on:
      - db
    networks:
      - mynet

소스 범위 - 0.0.0.0/0 으로 설정

* 다만 모든 IP 주소로부터의 접속을 허용하는 것이기에 보안상 취약할 수 있다. 좋은 방법은 내 IP 주소 혹은 접속이 필요한 사람들의 IP 주소를 등록하는 것이다. (본인의 경우 동아리 활동 중 다수와 웹 서비스를 공개하기 위해 사용)

 

 

Docker 설치 (환경 설정) 및 파일 업로드

1.  Docker 및 Docker Compose 설치

SSH 셸에 접속 후 아래 명렁어를 순차적으로 실행해 Docker 설치 및 환경 설정을 한다. 

 

패키지 업데이트 및 필요한 도구 설치

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

 

Docker GPG 키 추가 및 저장소 설정

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

Docker 및 Docker Compose 설치

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

설치 확인 - Hello from Docker! 메시지가 보이면 설치가 완료됨

sudo docker run hello-world

 

2.  파일 업로드 

파일 업로드를 눌러 실행시킬 파일을 zip 형태로 업로드 한다. 

* 이 때 파일은 웹 서버 php 파일과 Dockerfile, docker-compose.yml 파일이 전부 포함되어야 한다.  

 

업로드가 완료되었다면, unzip 명령어를 통해 파일의 압축을 해제한다. 

* 만약 unzip 명령어가 설치되어 있지 않다면 sudo apt-get install unzip 명령어로 설치한다. 

unzip [업로드한 파일명].zip

 

3.  Docker 컨테이너 실행하기

압축 해제 후, 파일이 있는 디렉터리로 이동해 다음 명령어를 실행한다. 

* 디렉터리 이동은 cd [디렉터리 이름] 로 실행

sudo docker-compose up -d --build

 

웹 서버 접속 URL은 다음과 같다.

http://[VM인스턴스 외부 IP]:8080 // phpadmin에 경우 맨 뒤 포트 번호만 5000 변경

 

브라우저에 접속하면 성공적으로 게시판 화면이 뜬다.

 

'Web > 기초' 카테고리의 다른 글

JDK21 설치와 환경 변수 설정  (0) 2025.10.23
OWASP ZAP 설치 및 사용법(Active Scan)  (0) 2025.10.23
BootStrap 부트스트랩 설치 및 적용  (0) 2025.10.23
[Web] 쿠키(Cookie) & 세션(Session)  (0) 2025.05.28
[Web] HTTP, HTTPS  (0) 2025.04.03