백엔드 32일차

이동현·2023년 4월 27일
0

코드캠프 백엔드

목록 보기
27/29

1. GCP 인스턴스

1) 구글 클라우드에서 VM인스턴스 만들기


표시된 부분을 누르면 빌린 컴퓨터의 내부 쉘로 접속이 된다.
해당 쉘은 봉닝의 로컬 컴퓨터와는 상관 없이, 24시간 계속 켜져있는 컴퓨터이며, 해당 컴퓨터를 종료하고 싶으면, 인스턴스 중지를 해줘야 한다.

2) docker설치(docker-compose설치)

  • 이 컴퓨터는 처음 설정할 떄의 우분투 운영체제이다.
    그러므로 우분투는 먼저 apt업데이트를 해줘야 한다. apt는 우분투의 패키지 관리툴이다.

    • sudo apt update
  • 도커를 배포 할건데 새 컴퓨터이니 당연히 도커가 없다.

    • sudo apt install docker.io, sudo apt install docker-compose

3) git으로 프로젝트 다운로드 받기

  • 이 컴퓨터에 프로젝트를 가져와줘야 한다.

    • 내 vscode에서 git remote -v로 연결된 저장소 확인후 빌려온 컴퓨터에 깃클론해준다.
  • 자신의 파일에는 .env로 주요 정보를 막아놨으니, 만들어줘야 docker-compose build를 해줄수 있다.

    • vi tor창이 .env.docker로 파일을 만든다.
    • 이 명령어를 하면 vim editor 창이 나오고 VScode와 마찬가지로 코드를 입력할 수 있다.
    • 코드를 입력하기 위해선 i를 눌러주시면, insert 모드로 바뀌면서 코드를 입력할 수 있는 상태가 됩니다.
    • insert 모드로 바꿔준 뒤, VScode의 .env.docker 파일에 존재하는 코드를 붙여넣는다
    • esc를 눌러 insert 모드를 종료시켜주고, :wq명령어를 통해 저장하고 vim editor창을 종료시킨다.
      • :q : vim editor 창 종료
      • :q! : vim editor 창 강제 종료
      • :wq : vim editor 창 저장하고 종료
      • cat 명령어를 사용하여 파일 내부를 볼 수도 있다. ex) cat.env.docker
  • 마지막으로 ls -al 명령어를 통해 .env.docker 파일이 만들어진 것을 확인할 수 있다.

  • 이제 docker-compose build를 통해 서버를 열어주면 된다.

4) 실행하기

  1. GCP 방화벽을 만든다.
  1. 다시 Compute Engine → VM 인스턴스를 들어가서 수정을 해줘 만들어줬던 방화벽 이름을
    네트워크 테그에 똑같이 붙여준다.

  2. vm인스턴스로 다시 들어가서 외부 ip를 따와 그 컴퓨터의 ip로 접속이 가능하게 된다.

2. Docker 명령어

  1. sudo docker-compose up
    언제든지 control + c 로 서버 종료 가능
    Foreground Process(포그라운드 프로세스)
    서버 종료가 너무 쉽게 이뤄지기 때문에 실제 배포는 포그라운드에서 진행되지 않는다.

  2. sudo docker-compose up -d
    백그라운드로 실행시킴 구글클라우드를 종료하지 않는한 도커가 살아있다
    하지만 로그가 안보인다.

  3. docker ps
    명령어를 통해 백그라운드로 도커가 실행되고 있는 것을 확인할 수 있습니다.

  4. docker-compose logs
    백그라운드로 실행한 로그를 확인해 보고 싶다면 해당 파일의 docker-compose logs 명령어를 통해 확인할 수 있습니다. (한번만 로그를 볼수 있음)

  5. docker-compose logs -f
    실행중인 로그를 계속 보고 싶다면 해당 파일의 docker-compose logs -f 명령어를 통해 확인할 수 있습니다.
    해당화면을 벗어나가고 싶으면 ctrol + c를 통해 종료시킬 수 있다, 이것은 **로그 보는것의 종료이지 서버의 종류가 아니다!!**

  6. docker-compose stop
    백그란운드에서 실행되기에 별도에 명령어로 서버를 종료시켜줘야 한다.

3. Docker root 권한 해제

사용자에게 sudo 권한을 부여하거나 해제하고 싶을 시, sudo 그룹에 사용자를 추가/삭제하면 됩니다.

  1. 인스턴스 터미널에 sudo cat /etc/group 명령어를 입력해본다.
    sudo cat /etc/group

  2. sudo usermod -aG docker 본인아이디 명령어를 통해 본인 계정을 등록 해줍니다.

  3. 다시 쉘을 껐다 키면 sudo docker-compose build가 아닌 docker-compose build가 가능해진다.

4. 클라우드 관리형 데이터베이스 배포

컴퓨터마다 내부IP와 외부IP가 있다.
내부 VPC안에서는 내부IP로 접속을 한다.
백엔드 외부IP는 브라우저가 VPC안으로 들어올때 필요하고 백엔드가 데이터베이스로 넘어갈떄는 DB의 내부IP가 필요하다.
=> 이러면 보안도 높아지고 속도도 빨라지는 효과가 있다.

데이터베이스는 두대 이상으로 관리를 해주고 문제가 생기면 나머지 한대의 데이터베이스로 넘어가게끔 해주는 기능이 필요하다 => High Availability(이중화구성)

이런것들이 복잡하기에 요즘은 특별한 보안문제가 아니라면 클라우드에서 대신해준다
ex)aws all in

데이터가 들어간 서비스의 형태는 이러하다.

1) 배포환경 분리


스테이징이란 배포하기 전 가장 완벽한 단계로 환경도 배포랑 동일해야 한다.

git pull origin master 최근 업로드 된것만 받아오기
git remote -v 깃푸쉬돼서 깃클론할 사이트 받아오기

1.docker-compose.dev.yaml, docker-compose.prod.yaml, docker-compose.stage.yaml 만든다. 그에 해당하는 env파일도 다 만들어준다.

  1. docker-compose.dev.yaml, docker-compose.prod.yaml, docker-compose.stage.yaml 파일의 volumes 부분은 모두 주석 처리해 주세요.

  2. 각자의 yaml 파일에 env_file을 각자에 맞게 바꿔준다.

  3. 우리는 배포를 하는 것이기에 prod를 사용하며, 이제는 prod를 실행시켜야 하기 때문에 아래와 같이 강제로 파일을 지정시켜서 실행시켜 줄 것입니다.

    • docker-compose -f docker-compose.prod.yaml build
    • docker-compose -f docker-compose.prod.yaml up

docker-compose builddocker-compose up 명령어를 통해 파일을 실행시켜 왔는데,

해당 명령어는 docker-compose -f docker-compose.yaml build 명령어를 줄여서 사용했던 것입니다.

0개의 댓글