07-01 02:16
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- selenium
- External Scheme
- Java
- BFS
- Physical Scheme
- descriptive statistics
- Mac
- Binary Search
- 셀레니움
- 리눅스 마스터 1급
- 리눅스 기초
- Class
- OOP
- Unity
- 리눅스
- Operator
- literal
- Entity
- dbms
- Polymolphism
- 자바
- Reference Type
- Entity Set
- Inheritance
- X윈도우
- systemd
- X.org
- python
- preprocessing
Archives
- Today
- Total
Byeol Lo
Docker - Dockerfile 본문
도커 컨테이너를 구성하려면 도커 이미지가 필요하고 도커 이미지를 만들려면 도커 이미지에 대한 설정과 함께 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