day07

Antipiebse·2022년 3월 22일
0

TIL

목록 보기
6/17

프론트엔드/ 백엔드/ 데이터베이스 전체 구조?

브라우저에서 백엔드 서버로 API요청을 보내고, 요청을 받은 백엔드가 DB로 데이터를 사용하기 위해서 ORM, ODB을 사용한다.

백엔드 구조와 앞으로 사용할 DB의 형태


백엔드

두 파일의 차이점은

가상컴퓨터에서 api서버 켜기(docker)

현대에선 웹 개발을 위해 컴퓨터 최소 3개 필요하다. 또한 운영체제에 따라 필요한 프로그램이 다르다. 이를 가상컴퓨터로 해결한다.
frontend-backend-DB
텍스트

Docker

부팅 등 운영체제의 핵심기능(커널)은 공유하는 가상머신이다. 도커에서 운영체제를 선택하고 가상컴퓨터를 사용해보자. (리눅스 기반.)

도커를 사용해야하는 이유

  • OS전체를 새로 설치하지 않아도 되는 가벼운 가상머신
  • docker_file설정으로 개발/배포환경 통일
  • 프로그램 미리 설치 가능

Docker란

개발 환경 요소들이 설치된 모습을 이미지로 캡쳐하여 클라우드에 올리고, 이미지들이 서로 연결되서 동작하는 설정을 문서(Dockerfile)로 저장한다. 이를 새로운 컴퓨터에 가서 도커를 설치하고 npm으로 라이브러리를 다운 받듯이 도커 허브에서 다운 받을 수 있다.
또한, 한 컴퓨터에서 다른 환경의 여러 서비스를 실행해야하는 경우엔 컨테이너로 분리되어 있기 때문에 가능하다.

DockerFile만들기

DockerFile이란

컨테이너를 실행하기 전 이미지를 만들어줘야하는데 이를 Dockerfile이라는 이름의 파일을 만들고 이미지를 만들기 위한 명령어를 입력한다.

FROM node:16 //다운받을 운영체제

WORKDIR /myfolder/ //작업할 폴더
COPY ./package.json /myfolder/ //복사할 파일들
COPY ./yarn.lock /myfolder/
RUN yarn install //모듈 다운

COPY . /myfolder/ //복사할 파일들
CMD node index.js //실행할 명령어 
+RUN은 여러번 입력이 가능
 CMD는 한 번만 실행 가능

Docker CLI

  • Docker 빌드(작성한 파일들 실행)
    docker build .
  • image id를 조회
    docker images
  • Docker run
    docker run 이미지id
  • Docker 프로세스 확인
    docker ps
  • Docker 내부 접속
docker exec -it 컨테이너-아이디 /bin/bash
windows=>docker exec -it 컨테이너-아이디 bash

DockerIgnore

  • Dockerignore
    각자의 컴퓨터 환경에 따라 node_module은 적용이 달라야하므로 ignore설정을 해줘야합니다.
//.dockerignore파일을 만들고
node_modules

DockerBuild 할때 설정


두 파일의 차이점은 첫 번째 파일에서는 모듈을 변경하지 않고 파일만 변경했는데도 모듈을 다시 다운 받아야하고,
두 번째 파일에서는 모듈을 변경하지 않고 파일만 변경했다면 파일만 변경됩니다. 이는 COPY하는 순서를 모듈 먼저로 설정하였기 때문입니다. 모듈이 변경되지 않았다면 미리 복사해놓은 CACHE를 통해 빠르게 넘어가므로 비교적 용량이 큰 모듈을 쓸데없이 다운 받는 시간을 줄여줍니다.


port-forwarding

앞서 빌드한대로 접속을 하면 접속이 안 된다.
why? 내 컴퓨터 안에 있는 docker에서 3000 포트로 서버를 가동 중이여서 브라우저에서 접속이 안 됨! 즉, 내 컴퓨터의 3000번 포트에는 아무것도 없기 때문이다.

port-fowarding을 통해 내 컴퓨터의 포트와 docker포트를 연결!

docker run -p 2000:3000 IMAGE ID
profile
백엔드 주니어 개발자

0개의 댓글