백엔드감자's Today I Learned : 항상 차분하고 꾸준하게.

BE_{Potato.}·2023년 2월 10일
0
post-thumbnail

🏃‍♂️ 본가에 내려가는 동안 편의점을 생각보다 오래봐서 공부에 시간을 많이 못 썼다. 원래 내일 올라오기로 했었는데 그러면 내일이 붕 뜰 것 같아서 오늘 막차타고 왔다.

다시 해야지. 오늘은 한 강이라도 들어야겠다.

💻 부트캠프 공부내용

Dockerfile에서 docker build를 하면 이미지가 생성되고 docker run을 하면 CMD가 실행되는 것이다. => CMD는 도커 빌드과정에 안 들어간다.
그리고 원래 명령어가 다 실행되면 도커가상컴퓨터는 종료되는데 종료되지 않는 명령어를 실행하면 가상컴퓨터도 안 꺼진다.

node 14버전은 npm,yarn도 다 깔려있어서 편리하다. 도커 가상컴퓨터에서 코드를 돌리는 원리는 myfolder같은 폴더를 하나 만들고 실행시키려는 코드들이 있는 파일전체를 COPY . 으로 만든 폴더 안에 넣고 yarn dev같은 꺼지지 않고 24시간 돌아가는 명령어를 켜놓는 것이다.

근데 중요한 것이 node_modules가 깔려있어야 하는데, 두가지 방법이 있다.
1번째는 CMD 명령어 전에 RUN yarn install을 Dockerfile에 넣어주는 것이랑 2번째는 로컬컴퓨터에서 미리 node_modules를 까는 것이다. -> 두번째 방법은 사용자컴퓨터 node버전과 운영체제 따라서 결과가 달라져서 안 씀.

  • 그래서 로컬컴퓨터의 node_modules가 도커컴퓨터에 복사되는 것을 방지해야하는데 .dockerignore 파일을 만들어서 안에 node_modules를 넣어준다.
  • 터미널에 docker ps라는 명령어를 치면 실행 중인 도커 볼 수 있다.
  • "docker exec -it 생성된이미지ID /bin/bash"라고 치면 도커에게 내가 도커안을 수정할 수 있게 터미널창을 만들어달라는 명령어이다.

도커 안에서 3000번 포트로 서버 켜져있을 때 포스트맨에서 요청보내도 응답안함 => 포트포워딩이 안되서.

포트포워딩은 작성할 때에 2가지를 써줘야 한다. 로컬에서 도커로 들어갈때: 도커안에서 들어갈때
ex)3000:3000
=> docker run -p 8000:3000 처럼 포트포워딩해서 도커를 실행하면 된다.

포트포워딩 하면 이렇게 보이는 모습. 앞에 '0.0.0.0'은 누구든지 접속가능하다는 의미 => 나중에 해킹부분을 위해서 이 부분 변경해줘야 함.

  • 'localhost'는 나만 접속가능한 것. 아이피로 나타내면 '127.0.0.1'.

(중요)'포트 포워딩'은 네트워크의 중요한 개념이라 중요하다!

  • 도커를 삭제할 때 컨테이너(가상컴퓨터)와 이미지를 둘 다 삭제해야 한다.
    도커는 이미지들을 캐시에 넣어서 캐싱해서 쓰는데 아래의 COPY . 은 캐시에서 가져오면 안되고 변경내용들이 있을 수 있어서 로컬에서 그때그때 복사해서 써야한다. 그리고 이 아래의 명령어는 캐싱이 안되고 재실행된다.그래서 변경된 순서가 아래 사진과 같다. 먼저 package.json과 yarn.lock를 먼저 복사하고 node_modules를 만들어준 다음에 파일 복사를 하는 것이다.
    현업에서 일하면 코드 변경으로 15~30분을 기다리게 되는데 매번 할때마다 이러는 것은 너무 비효율적이라 Dockerfile의 명령어 순서만 바꿔주는 것만으로도 시간단축을 굉장히 많이 할 수 있다.
profile
항상 '기본'을 중요시하는 예비 백엔드개발자입니다!

0개의 댓글