Docker

SSAD·2023년 2월 15일
0

BackEnd

목록 보기
19/44
post-thumbnail

Dockerfile 작성

# Express in Docker Container 

# dockerhub에서 검색
FROM node:14

# 작업디렉터리 설정
WORKDIR /myfolder/

# 소스코드만 변경 시 이렇게 하면 재실행 방지할수 있음 (캐싱 문제 해결)
COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
RUN yarn install

# 현 위치의 모든 파일을 폴더에 복사하기
# 모든 파일을 복사해 오는데 문제는 도커에서 관리하는 부분이
# 수정 됬다면 . <- 다른 파일이 새롭게 카피해서 넣음 
# 여기서는 캐시가 깨짐 
# 그래서 이 밑부분부터는 캐싱이 안되고 재실행 됨 
COPY . /myfolder/

# 컨테이너 안에서 backend 실행
CMD yarn dev
  1. FROM
  • Dockerhub에서 검색한 이미지 편하게 사용할수 있음
  • node:14 이면 node, npm, yarn이 모두 설치된 리눅스 환경 구성됨
  1. WORKDIR
  • 가상 컴퓨터가 만들어지면 이후 명령어를 실행할 작업 폴더를 지정
  1. COPY
  • . /myfolder/ 현재 디렉토리의 모든 파일을 myfolder에 모두 복사
  1. RUN
  • 이미지를 작성하기 위해 실행하는 명령을 기술
  1. CMD
  • 이미지를 바탕으로 생성된 컨테이너 안에서 명령을 실행

.dockerignore

  • 이미지를 만드는 과정 중 불필요한 파일이 이미지화 되는 것을 막음
node_modules
  • 이미지로 만들 때 package.json과 yarn.lock에서 의존성 패키지와 패키지들을
    따로 컨테이너 안에서 설치

Docker 명령어

docker build

  • 하나의 이미지로 만듬
// 현재 디렉토리에 있는 Dockerfile을 이미지로 변환
docker build .

docker images

  • 현재 docker image를 확인
docker images

docker run

  • 컨테이너 실행
  • 만들어진 이미지로 컨테이너를 실행 시킴
docker run 이미지ID

docker ps

  • 현재 도커의 프로세스 확인
docker ps

docker exec -it 컨테이너_ID /bin/bash

  • 컨테이너 내부 접속
docker exec -it 컨테이너_ID /bin/bash

docker stop 컨테이너 ID

  • 도커 컨테이너를 STOP상태로 변경
docker stop 컨테이너_ID

docker container 삭제


docker rm `docker ps -a -q`

docker image 삭제


// 도커 이미지 삭제하기
docker rmi 이미지_ID

// 전체 도커 이미지 삭제하기
docker rmi `docker images -a -q`

도커 시스템 초기로 돌리기

docker system prune -a

docker 포트 포워딩

docker run -p 8000:3000 이미지_아이디

  • 내컴퓨터 8000번 포트와 도커컨테이너 3000번 포트 연결
profile
learn !

0개의 댓글