본문 바로가기

클라우드/도커(Docker)

도커 Docker .dockerignore 파일

.dockerignore 파일

 

Dockerfile과 같은 디렉터리에 들어있는 모든 파일을 컨텍스트(context)라고 한다

특히 이미지를 생성할 때 컨텍스트를 모두 Docker 데몬에 전송

필요 없는 파일이 포함되지 않도록 컨텍스트에서 파일이나 디렉터리를 제외하고 싶을 때  .dockerignore 파일을 사용한다

 

더보기

vagrant@docker:~/build/web$ tree
.
├── Dockerfile
├── conf
│   └── ports.conf
└── html
    ├── dev.html
    └── index.html

2 directories, 4 files


# Dockerfile
vagrant@docker:~/build/web$ cat Dockerfile 
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt update && apt install -y apache2
ENTRYPOINT ["apachectl"]
CMD ["-D", "FOREGROUND"]
EXPOSE 8080/tcp
ADD conf/ /etc/apache2
COPY html/ /var/www/html

# ports.conf
vagrant@docker:~/build/web/conf$ cat ports.conf 
Listen 8080

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule> 

# dev.html
vagrant@docker:~/build/web/html$ cat dev.html 
hello ldh

# index.html
vagrant@docker:~/build/web/html$ cat index.html 
ldh

# 이미지1 생성
vagrant@docker:~/build/web$ docker build -t ldhweb:v1 .

# 컨테이너1 생성
vagrant@docker:~/build/web$ docker run -d ldhweb:v1

# 확인
vagrant@docker:~/build/web$ docker exec -it 4d bash
root@4d86e41c6743:/# cd /var/www/html/
root@4d86e41c6743:/var/www/html# ls
dev.html  index.html

# .dockerignore 파일 생성
vagrant@docker:~/build/web$ cat .dockerignore 
html/dev.html

# 이미지2 생성
vagrant@docker:~/build/web$ docker build -t ldhweb:v2 .

# 컨테이너2 생성
vagrant@docker:~/build/web$ docker run -d ldhweb:v2

# 확인
vagrant@docker:~/build/web$ docker exec -it dc bash
root@dc04af14c705:/# cd /var/www/html/
root@dc04af14c705:/var/www/html# ls
index.html
 -> .dockerignore 파일로 인해 dev.html 파일은 copy 되지 않음