Web/Docker

Dockerfile

tose33 2023. 12. 30. 14:45

Dockerfile 은 이미지를 만드는 방법이다.

이미지는 여러개의 레이어로 이루어져있다고 했는데 이 레이어들이 뭔지 내가 정의하여 이미지를 만드는 방법이다.

 

FROM ubuntu:20.04
# -y 옵션은 정말 다운로드 할것인가에 대한 자동 수락 옵션
RUN apt update && apt install -y python3
# /var/www/html 디렉토리로 이동 
WORKDIR /var/www/html
# host에 있는 index.html 을 컨테이너의 '.' 경로에 복사 
# 즉 위의 WORKDIR 에 의해 '/var/www/html' 에 복사됨 
COPY ["index.html", "."]
# 명령어 실행 'python3 -u -m http.server'
CMD ["python3", "-u", "-m", "http.server"]

 

 

RUN

FROM ubuntu:20.04
RUN apt update 
RUN apt install -y python3

 

RUN 은 Dockerfile 이 빌드될때 실행할 명령어를 의미한다.

Dockerfile 명령어 하나 마다 하나의 레이어가 된다.

따라서 위와 같이 RUN 을 여러개 쓰면 RUN 이 두개의 레이어를 쓰는 것이고 효율적이지 않다.

 

FROM ubuntu:20.04
# -y 옵션은 정말 다운로드 할것인가에 대한 자동 수락 옵션
RUN apt update && apt install -y python3

 

이렇게 && 으로 연결해서 하나의 RUN 명령어로 해주는게 좋다.

 

CMD

CMD는 RUN 과는 다르게 컨테이너가 실행될때 실행되는 명령어다.

즉 RUN은 이미지에 반영, CMD 는 컨테이너에 반영.

 

 


Dockerfile 로 빌드해서 이미지 만들기

// 현재 디렉토리에 있는 Dockerfile 빌드 
docker build -t web-server-build .

// web-server-build 이미지로 web-server 이름의 컨테이너 실행
// 호스트 포트 8888, 컨테이너 포트 8000 연결 
docker run -p 8888:8000 --name web-server web-server-build

 

 

 

 

 

ref

https://www.youtube.com/watch?v=0kQC19w0gTI