Docker, 배포하기

huni_·2022년 7월 7일
0

React

목록 보기
45/57

GCS(구글스토리지) 배포

구글 스토리지에 정적파일 배포를 시작합니다.

구글클라우드 플랫폼에 로그인해 주세요.

왼쪽 상단 메뉴를 클릭하시고 클라우드 스토리지의 브라우저를 클릭해 주세요.

새로운 버킷을 하나 만들어 주세요.

버킷의 이름을 작성하고 계속을 눌러주세요.

위치는 아시아를 선택해 주세요.

여기서부턴 계속 버튼을 이어서 클릭해 주세요.

버킷이 완성되었습니다!

클라우드 쉘에서 git 소스코드를 clone해 주세요.

yarn installyarn build를 진행하여 out 폴더를 추출해 주세요.

gsutil 명령을 실행하여 소스코드를 구글스토리지에 업로드해 주세요.

소스코드가 정상적으로 업로드 되었는지 확인해 주세요.

모든 사람들이 스토리지의 html, css, javascript 파일을 다운로드 받을 수 있도록 권한을 변경해 주세요.

다시 처음 화면으로 이동해서 해당 스토리지의 우측 메뉴를 클릭하고 웹사이트 구성 수정을 눌러주세요.

어떤 파일이 시작 파일인지(index.html), 어떤 파일이 에러 파일인지(404/index.html)를 알려주세요!

스토리지 배포를 축하합니다!

하지만, 접속을 하기 위해선 접속을 도와주는 도구와 연결을 해야합니다.

이 도구를 로드밸런서(부하분산기)라고 부릅니다.

좌측 상단 메뉴에서 네트워크서비스를 클릭하고 부하분산을 클릭해 주세요.

새로운 부하분산기를 하나 만들어 주세요.

HTTP(S) 방식의 부하분산기를 만들어 주세요.

부하분산기는 프론트엔드, 백엔드로 구성됩니다.

여기서 프론트엔드와 백엔드는 웹서비스의 화면단, API단을 의미하는 것이 아닙니다.

외부에서 로드밸런서로 진입하는 지점프론트엔드,

로드밸런서에서 소스코드가 담겨있는 위치로 내보내는 지점백엔드입니다.

프론트엔드를 HTTP로 만들어 주세요.

로드밸런서의 IP주소는 임시 주소로 만들어도 괜찮지만, 이후에 HTTPS 연결을 위해 고정주소로 만들어 주세요.

백엔드를 기존에 만들었던 스토리지 버킷과 연결시켜 줍니다.

프론트엔드백엔드가 만들어지면, 가운데의 호스트 및 경로 규칙은 자동으로 생성됩니다.

로드밸런서까지 만들어 주셨군요!

축하합니다!

이후 배포

SSR 배포

Docker

도커 설치

Docker 도커 홈페이지에 들어갑니다.

Get Started 를 누릅니다.

OS에 맞게 다운로드하고, 설치하고, 재부팅합니다. ⇒

Docker 란?

도커는 개발 환경 요소들이 설치된 모습을 이미지로 저장합니다. 저장한 이미지를 클라우드에 올립니다. 이미지들이 서로 연결되서 동작하는 설정을 문서(Dockerfile)로 저장합니다. 새 컴퓨터에 가서 복사한 문서의 내용대로 이미지를 다운받아 설치합니다.

가상 머신이랑 비슷하다고 볼 수 있습니다. 하지만 가상머신보다 훨씬 빠르고, 자원을 효율적으로 사용합니다. 왼쪽이 가상머신, 오른쪽이 도커입니다. 도커에는 불필요한 추가적인 운영체제 설치가 필요 없습니다.

<출처>

도커 허브에서는 npm 다운 받는 것처럼 다른 사람들이 올려놓은 이미지를 다운로드 할 수도 있습니다. 또한, 한 컴퓨터에서 다른 환경의 여러 서비스를 실행해야 하는 경우, 컨테이너로 분리되어 있기 때문에 서로 독립되어 실행 될 수 있습니다.

이것들을 모두 간단한 명령어로 실행 할 수 있습니다.

Docker를 사용해서 배포하는 이유

우리가 서버를 돌리기 위해서는 먼저 환경이 갖춰져야 합니다.

새로 컴퓨터를 샀다거나 또는 새로 직원이 들어왔다고 생각해봅시다. 그럼 컴퓨터에 우리가 개발한 환경과 똑같이 만들어야합니다.

이를위해 Node.js와 같은 언어 그리고 언어의 버전, 데이터베이스, 수 많은 node_modules를 버전을 맞춰서 설치해줘야 합니다. 한두가지가 아니겠죠.

그래서 예전 회사에서는 환경을 구축하는 과정을 하나씩 캡쳐하고, 기록해서 방법을 정리해두기도 합니다. 가이드 문서가 있다고 한들 매번 이렇게 구축하는 것은 매우 번거로운 일입니다. 이를 간편하게 해주는 것이 바로 도커입니다.

Docker-compose의 이해

여러가지 컨테이너를 다룰 때 좀더 복잡한 설정이 필요하게 됩니다. 이럴 때 Docker-compose를 사용합니다. docker-compose.yml 파일을 미리 만들어서 설정을 어떻게 할지 적어둡니다. 그리고 docker-compose up 명령어를 입력해서 컨테이너를 실행합니다.

docker-compose.yml 파일 예시 ( yml 파일은 들여쓰기를 꼭 지켜주셔야합니다! )

version: "3.9"  
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Dockerfile

컨테이너를 실행하기 전에 먼저 해줘야할 것은 이미지를 만드는 것입니다. Dockerfile 이라는 이름의 파일을 만들고 이미지를 만들기 위한 명령어를 입력합니다. 그리고 docker-compose build 명령어를 통해 이미지를 만들게 됩니다.

Dockerfile 예시

FROM node:12

# 앱 디렉터리 생성
WORKDIR /usr/src/app

# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./

RUN npm install

# 앱 소스 추가
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

환경 변수 설정

Dockerfile 안에서 환경 변수를 설정하고 싶은 때는 ENV 명령어로 설정합니다.

ENV [key] [value]
ENV [key]=[value]

profile
FrontEnd Developer

0개의 댓글