home..

배포 과정 정리

GCP 로 배포하기

환경설정

$ sudo apt install docker.io
$ sudo apt-get install -y curl
$ sudo chmod +x /usr/local/bin/docker-compose

프로젝트 폴더에 Dockerfile 생성

docker-compose.yml 파일 작성하기
version: "3.4"
services:
  actbackend:
    image: actbackend
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      NODE_ENV: development
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
      - ./certs:/usr/src/app/certs:ro
      # 위 부분은 ./certs 디렉토리를 컨테이너의 /usr/src/app/certs 디렉토리에 읽기 전용(ro)으로 마운트하는 코드다.
    ports:
      - 443:443
      - 9229:9229
    command: ["node", "app.js"]
    restart: always

이후 Docker 환경에서 Docker 이미지를 빌드하고 컨테이너를 시작하면 된다.

깃 레포에 커밋 한 후

인스턴스에서 pull하기.

$ sudo chown -R host:host /home/name/foldername/ac.t_backend
$ sudo chmod -R u+rw host:host /home/name/foldername/ac.t_backend

docker-compose 빌드 하기

$ docker-compose build
                  빌드 완료!!!

도커 컨테이너 실행

app 실행할 때 아래 명령어를 치면 된다.

docker-compose up -d

로그 확인 (에러 확인용)

docker-compose logs -f

컨테이너 중지:2

docker-compose down

Docker 환경에서는 Node 설치 X

But 컨테이너 내부에서 의존성을 설치했어야 됐다.

$ docker-compose run --rm actbackend npm install

우리 앱에서의 배포

현재 기술 스택: React Native 와 Node.js 백엔드 (도커 환경에서 잘 동작한다.) 기능들은 복잡하지만 아직 마이크로서비스 수준까지는 아님.

배포 환경 둘러보기


Docker Network:

모델을 기존 백엔드 프로젝트에 통합하고 VM 인스턴스에 배포.

배포 오류

  1. 컨테이너가 시작됐다가 바로 종료됨
    • 로그확인 -> 파일 이름 문제였다; vs 로 고쳐도 반영 안 됐음… 어쩔 수 없이 로컬에서의 폴더 위치에서 git bash 열어서 이름 수동으로 수정!3
    • 유저 깃 로그에서 직접 대문자로 수정 후 컨테이너 재빌드했더니 해결됐다.
  2. Flask api 와의 통신 문제:

배포 상태 확인

$ sudo lsof -i :443
$ ps aux | grep node

  1. Docker 환경에서 HTTPS 서버를 실행하기 위함이다. 

  2. 컨테이너, 네트워크, 볼륨 모두 제거하려면 docker-compose down -v 

  3. 자주 발생하는 에러라고 한다. 

© 2025 Jeewon Yoon   •  Powered by Soopr   •  Theme  Moonwalk