백엔드 복습-Day7

이예음·2022년 12월 4일
0

백엔드 복습하기

목록 보기
7/23
post-thumbnail

07-01-docker

index.js 파일 작성

Dockerfile 작성

Dockerfile : 가상컴퓨터를 만드는 설명서

docker build

build: 만들어진 설명서를 가지고 하나로 묶여진 이미지로 만들어 주는 것
명령어 : docker build .

docker images

: 빌드가 완료되어 생성된 이미지를 확인할 수 있음

docker run 이미지ID

: 만들어진 이미지를 사용하여 새로운 컴퓨터를 만들기 위해 이미지를 실행해 보는 것

이렇게 만들어진 가상 컴퓨터를 컨테이너라고 한다.

docker images -a

: 종료된 이미지까지 전체 조회

docker rmi 이미지ID

: image 삭제

docker ps

: docker 컨테이너 확인
docker가 실행된 후 종료가 되었기 때문에 도커 프로그램이 존재하지 않는 것

docker ps -a

: 종료된 컨테이너 까지 확인 가능

docker rm 컨테이너ID

: 컨테이너 삭제

다 지우고 다시 조회해보면 나오지 않음
컨테이너만 지운 상태이며, 이미지는 남아있음. 이미지까지 지우려면 docker rmi 이미지ID

07-02-docker-with-express

.dockerignore 파일 만들기

Dockerfile

.dockerignore

docker build .

docker images

docker run 이미지ID

도커 내부 접속

현재 프로세스 확인

명령어 docker ps => STATUS가 UP으로 되어있으면, 실행 중이라는 뜻이다.

컨테이너 내부 들어가기

명령어 : docker exec -it 컨테이너_아이디 /bin/bash

도커에서 돌아가고 있는 가상컴퓨터의 터미널 접속

소스코드 복사 확인

pwd명령어로 현재 폴더위치를 확인 할 수 있으며,ls 명령어를 통해 모든 소스코드들이 잘 복사되어왔는지를 확인함
쉘 종료는 exit를 입력하면 됨

포트포워딩

: 가상 컴퓨터의 포트번호와 내 컴퓨터의 포트 번호로 연결

docker 포트 포워딩 실행 : docker run -p 3000(내 컴퓨터 포트) : 3000(가상컴퓨터 포트) 이미지ID


결과

07-03-docker-with-express-package-json

왜 포트번호가 변경되면 다시 build를 해줘야하는가

이미 입력해놓은 코드로 build해서 이미지를 찍어놨기 때문에, 변경해서 실행하려면 다시 build해서 새로 이미지를 저장한다.
=> 그러면 yarn install로 새로하는건데 시간이 오래걸리고 바뀔때마다 build를 해줘야하는 번거로움이 크다

소스코드 하나 바뀔때마다 build할 수없어 특정 파일을 지정해서 그 파일은 바뀐걸 바로 반영해줘!빌드하지않아고 괜찮아!!하는게 volumes 라고 한다.

index.js 파일만 수정했는데, 왜 package.json도 다시 설치를 해야하는가

도커는 최대한 똑같은 명령을 안받기 위해 캐시라는 곳에다가 임시 저장을 한다.
캐시에 이미 저장되어 있는 명령을 가져와서 쓰겠다고 하는 기준은 변경된 파일이 있는 줄 위에 있는 것들은 캐시에 이미 저장되어 있는 명령을 쓰고 변경된 파일 밑에 있는 것들은 모두 다 새로 빌드한다.
그래서 dockerfile 순서를 변경해줘야한다.

# node가 설치되어있는 리눅스 컴퓨터 한대 만들기
FROM node:14

# 명령어를 실행할 작업 폴더 위치 지정
WORKDIR /myfolder/
# 모든 소스 코드를 복사하기 전에 먼저, packge.json과 yarn.lock을 복사하게함
COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
# 그 후에 모듈들을 설치
RUN yarn install

# 그러고 모든 소스코드를 복사해 도커 컴퓨터에 넣어주기
COPY . /myfolder/

#  package.json 파일을 확인하고 실행 명령어를 입력해서 서버 실행
CMD yarn dev

제일 자주 변경될 것 같은 myfolder를 하단에 만들어 줬다.
이렇게 Dockerfile을 작성하게 되면, package.jsonyarn.lock 파일이 수정되지 않았다면 RUN yarn install 까지는 기존 것을 그대로 쓰고, 밑에 실제로 소스코드가 고쳐진 부분만 새로 반영되어 실행된다.

profile
응애

0개의 댓글