우리는 git을 사용할 때 불필요한 파일의 add를 방지하기 위해 .gitignore파일로 관리한다.
도커도 같은방식으로 .dockerignore파일을 이용하여 관리할 수 있다.
사용방법을 한번 알아보자.
문제상황
dockerignore가 없을 경우 어떤 문제가 있는지 알아보자.
# 폴더구조
├── Dockerfile
├── log
└── main.py
# Dockerfile
FROM python
WORKDIR /app
COPY . .
CMD ["python3", "main.py"]
# main.py
import time
while 1:
pass
# Do something
main.py 는 어떤 작업을 수행하는 파이썬 파일이다. (ex. 웹서버, 모델 학습 ...)
log파일은 컨테이너를 만들 때 불필요한 파일이라고 가정한다.
이를 실행하고 컨테이너 내부 /app폴더로 들어가보자.
docker build -t mypython .
docker run --rm -d --name mypy mypython
docker exec -it mypy /bin/bash
ls
도커 컨테이너 내부에서 ls명령을 실행한 후 모습이다.
불필요한 파일이었던 dummy파일이 같이 들어가 있다.
이미지 빌드시 COPY . . 명령에서 폴더 내 모든 파일을 옮겼기 때문이다.
만약 dummy파일의 크기가 크거나 여기저기 흩어져있을 때 문제가 생길 수 있다.
이런 불필요한 파일이 같이 들어가는 것을 방지하기 위해 dockerignore를 사용한다.
dockerignore
dockerignore를 사용하는 법은 간단하다.
빌드할 디렉토리 최상단에 .dockerignore를 만든 후 gitignore를 작성하듯이 작성하면 된다.
# 변경된 폴더구조
├── .dockerignore
├── Dockerfile
├── dummy
└── main.py
# .dockerignore
dummy
이러고 다시 실행하면
가 나오는데 생각해보면 .dockerignore과 Dockerfile도 컨테이너 내부에선 필요 없는 파일이다.
dockerignore 또한 dockerignore파일에다가 추가하면 dockerignore할 수 있다.
# 변경된 .dockerignore
dummy
.dockerignore
Dockerfile
이제 깔끔해졌다.
보통 .dockerignore에 .git, node_modules, 각종 개발시 나온 로그, 테스트파일들을 추가하는 것 같다.
'프로그래밍 > 도커' 카테고리의 다른 글
[도커] 14. ECR 무작정 사용하기 (2) | 2023.07.09 |
---|---|
[도커] 13. 바인드 마운트 사용하기 (0) | 2023.05.07 |
[도커] 11. 환경변수 (0) | 2022.08.19 |
[도커] 10. 도커 네트워크 (3) | 2022.08.15 |
[도커] 9. 도커 이미지 만들기 (0) | 2022.01.03 |