Notice
Recent Posts
Recent Comments
07-01 02:16
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Docker - Dockerfile 본문

CICD/Docker

Docker - Dockerfile

알 수 없는 사용자 2024. 6. 15. 17:58

 도커 컨테이너를 구성하려면 도커 이미지가 필요하고 도커 이미지를 만들려면 도커 이미지에 대한 설정과 함께 docker image build를 해주어야 하며, 어떤 파일들을 이미지에 넣을건지, 이미지의 이름은 뭔지, 포트는 어떤걸 열 것인지도 설정하며, 초기 환경 설정에 대한 어떤 커맨드를 실행해야 하는지 등을 넣을 수 있다. 그러기 위해서는 Dockerfile(구성 메타 데이터)를 넣어야 한다. 자신이 작업하고 있는 프로젝트의 root directory에 대해 Dockerfile을 만들어주면 된다.

 

Dockerfile Syntax

Syntax Desc. Example
FROM base로 할 image를 넣을 수 있다.
자신이 작업할 미리 설정된 image를 가져올 수 있다는 뜻.
// python이 깔린 container를 가져온다
FROM python:3.12-slim
LABEL image 정보에 대한 meta data를 넣을 수 있다.
(넣고 싶은 정보의 라벨명) = "(넣고 싶은 정보)"
// image version은 1.0.0 이다.
LABEL version = 1.0.0
ENV 환경변수를 넣을 수 있다. ENV APP_HOME="/usr/src/app"
ENV APP_ENV="production"
WORKDIR 자신이 작업할 디렉토리를 설정할 수 있다.
그런 디렉토리가 없다면 생성하고 거기서 작업을 함(처음 container에 들어갔을 때의 현재 디렉토리에 생성되어 있음).
// app이라는 디렉토리에서 작업을 함, cd와 같음
WORKDIR /app
COPY image의 현재 디렉토리에 넣을 파일을 copy로 넣을 수 있다. // image의 현재 디렉토리에 로컬의 현재 디렉토리에 있는 파일들을 전부 넣는다(여기서 .dockerignore 에 있는 파일들은 제외시키며, image의 현재 디렉토리는 WORKDIR에 설정되어 있는 곳을 말한다, default는  container를 접속한 그 위치를 말함).
COPY . .
RUN docker image의 초기 구성을 위해 실행할 명령어를 넣을 수 있다. 이때 layer가 RUN의 개수에 따라 쌓이게 되는데, 가능하면 한 동작에 대해 여러 명령어를 쓸 때는 RUN을 쓸 때, && 을 통해 다중 명령을 실행하도록 하자. RUN pip install --no-cache-dir -r requirements.txt && \
    python manage.py makemigrations && \
    python manage.py migrate
EXPOSE 컨테이너에서 open할 port를 지정한다.
주의 할 점은 local이 아니라는 것.
// 8080 을 open, 이제 8080으로 request 요청 가능
EXPOSE 8080
CMD container 로 올릴때 실행될 명령어를 말한다. CMD ["python", "manage.py", "runserver"]
ENTRYPOINT 진입할 수 있는 shell 의 방법을 지정한다. zsh, bash, ... 등이 있을 터이다.

또한 CMD와 함께 사용할 수 있다.
// echo를 통해 인자로 Hello, World!를 받아 출력한다.
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]

// docker container를 실행할 수 있고,
// CMD의 인자를 변경할 수도 있다.
docker run myimage                # echo Hello, World!
docker run myimage Goodbye!       # echo Goodbye!

 

'CICD > Docker' 카테고리의 다른 글

Docker - Container  (1) 2024.06.09
Comments