일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Long Short Term Memory
- skip-gram
- Multi-Layer Perceptron
- CBOW
- 차원 감소
- Linear algebra
- object detaction
- 파이썬
- Charlse Severance
- 분포 가설
- 선형대수
- nn.Module
- dl
- deep learning
- Python
- pythonForEverybody
- 상호 정보량
- 1x1 Convolution
- docker
- excel
- f1-score
- mlops
- 시소러스
- GoogLeNet
- 동시발생 행렬
- pytorch
- py4e
- Gated Recurrent Unit
- 벡터 간 유사도
- convolution
- Today
- Total
Tech & TIL
Docker 문법 정리 본문
Dockerfile에서 사용되는 문법 정리
1) syntax
# syntax=docker/dockerfile:1
반드시 Dockerfile
첫 번째 줄에 적어야한다. Parser directive라고 표현하며 도커 빌더에게 도커 파일을 파싱할 때 어떤 문법으로 파싱해야하는지 알려주는 역할을 한다.
docker/dockerfile:1
은 항상 가장 최신의 version 1 syntax로 설정해주기 때문에 공식 문서에서 권장하고 있다.
2) FROM
FROM python:3.8-slim-buster
도커 이미지는 다른 이미지로 부터 상속받을 수 있다. 따라서 스스로 Base Image
를 구축하는 것보다 Official 하게 제공되는 Base Image
를 사용하는 것을 권장한다. 여기서는 Python 3.8 버전의 Base Image를 기준으로 예를 든다.
3) WORKDIR
WORKDIR /app
Working Directory
를 설정하는 표현이다. 이것이 도커에게 default location으로 /app
을 사용하라고 알려주는 역할을 한다. 이렇게 함으로써 개발자들은 도커 파일을 작성하면서 Full Path
를 적어야하는 불편함을 방지할 수 있다.
4) COPY
COPY requirements.txt requirements.txt
도커 파일에 requirements.txt 라는 파일을 설치하는 명령을 적고 싶다면 해당 파일을 도커 이미지에 복사해주어야 한다. COPY를 하지 않는다면 이미지는 해당 파일의 위치를 알 수 없다.
COPY는 두 개의 파라미터를 가진다.
- 이미지에 복사할 파일
- 파일을 어디에 복사할지
따라서 위 명령은 *"현재 폴더 밑의 requirements.txt를 이미지의 현재 폴더의 requirements.txt에 복사하겠다"* 는 말이 된다.
5) RUN
RUN pip3 install -r requirements.txt
COPY
로 이미지에 requirements.txt
가 복사되고 나면 RUN
명령어로 pip3 install
을 실행할 수 있다.
명령어가 실행되면 이미지에 requirements.txt 내부에 있는 라이브러리들이 설치가 된다.
6) COPY . .
COPY . .
지금까지의 과정을 통해, 우리는 Python 3.8
버전의 이미지를 갖게 되었고 Dependencies를 설치 완료 되었다. 다음 단계는 우리의 전체 소스코드를 이미지에 쓰는 것이다. COPY 명령어를 사용하여 (. 은 현재 위치를 의미) 현재의 전체 코드를 복사하여 이미지에 넣어준다.
7) CMD
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
마지막으로 우리가 해야할 일은 도커에게 이미지가 컨테이너 내부에서 실행되었을 때 어떤 명령어를 실행해야할지 알려주는 것뿐이다. CMD
명령어를 사용하여 터미널에서 사용하는 코드를 그대로 넣어주면 터미널과 동일하게 동작한다.
정리
Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
Reference
'MLOps' 카테고리의 다른 글
Docker 튜토리얼 [파이썬] - 2 (0) | 2022.05.09 |
---|---|
Docker 튜토리얼 [파이썬] - 1 (0) | 2022.05.09 |