티스토리 뷰

Docker 와 Container

Dockerfile - ONBUILD

looeon 2024. 3. 5. 16:36

 

 ONBUILD 를 사용하면 만들어진 도커이미지를 베이스 이미지로 사용하여 빌드하면 실행된다

 

>> docker image 를 개발자 혼자 모두 만드는 것이 아니다

>> nginx 기반으로 웹개발을 하는데, 규모가 너무 크면 팀으로 진행을 한다

 

[ EX ]

---- 가정 ----

 

# 팀장이 docker image.base 를 만들어서 뿌리면

# 팀원들은 ONBUILD ADD 의 내용에 따라 mkdir src/website.tar 를 만들어서 

# 각자 개인들의 작업을 실행한다

팀원 길동 영희 철수
역할 웹디자인 디비연결 프로그램
개인이 쓰는 파일 src/website.tar src/website.tar src/website.tar

# 똑같이 쓸 이미지는 똑같이 쓰고, 다르게 쓰는 이미지를 각자 ONBUILD 로 다르게 쓰면 된다

# 각 팀원의 src / website.tar 는 내용이 다르다

 

 

 

▶Dockfile

# ONBUILD 쓰고 명령어 쓸거면 RUN 써야한다

# ONBUILD 의 명령어인 ADD

 

>> ADD 로 파일을 복사하면 tar 파일을 푼다

>> COPY 는 tar 파일 풀지 못한다 단순 복사

>> cp 는 docker 이미지 안에있는 website.tar 를 찾아서 복사

 

○ 경로는 꼭 상대 경로로 적어야한다

FROM ubuntu:18.04
RUN apt-get -y update
RUN apt-get -y install nginx
ONBUILD RUN echo "hello container"
ONBUILD RUN sleep 10s
EXPOSE 80
ONBUILD ADD src/website.tar /var/www/html
#COPY src/website.tar /var/www/html
#RUN cp website.tar /var/www/html
CMD ["nginx","-g","daemon off;"]

 

 

 

# 이미지 필터 삭제

○ 생성 이미지가 많아서 모두삭제

[vagrant@docker1 work]$ docker rmi $(docker images -q)

 

 

 

▷ 이미지로 올린다

[vagrant@docker1 work]$ docker build -t mynginx -f file .

 

 

>> ONBUILD RUN 으로 실행된 echo 와 sleep 은 실행되지 않았다

 

 

● 새로운 m1 파일을 만든다

FROM mynginx

 

▷ 에러가난다 ??

>> website.tar 가 없으므로 에러가 난다

[vagrant@docker1 work]$ docker build -t nginxapps -f m1 .

 

 

▷ 여러 파일이 있다고 가정하자

[vagrant@docker1 work]$ mkdir src
[vagrant@docker1 work]$ cd src
[vagrant@docker1 src]$ echo my nginx > index.html
[vagrant@docker1 src]$ touch a.jpg home.gif b.jpg d.gif
[vagrant@docker1 src]$ ls
a.jpg  b.jpg  d.gif  home.gif  index.html
[vagrant@docker1 src]$ tar -cf website.tar *
[vagrant@docker1 src]$ ll
total 16
-rw-rw-r--. 1 vagrant vagrant     0 Mar  5 16:18 a.jpg
-rw-rw-r--. 1 vagrant vagrant     0 Mar  5 16:18 b.jpg
-rw-rw-r--. 1 vagrant vagrant     0 Mar  5 16:18 d.gif
-rw-rw-r--. 1 vagrant vagrant     0 Mar  5 16:18 home.gif
-rw-rw-r--. 1 vagrant vagrant     9 Mar  5 16:17 index.html
-rw-rw-r--. 1 vagrant vagrant 10240 Mar  5 16:18 website.tar

 

 

 

● 다시 실행해보면 website.tar 가 ADD 되어 풀리기 때문에, 바로 웹사이트가 띄워진다

[vagrant@docker1 work]$ docker build -t nginxapps -f m1 .

[vagrant@docker1 work]$ docker run -d -p :80 nginxapps

 

'Docker 와 Container' 카테고리의 다른 글

Dockerfile - Multi-stage build  (0) 2024.03.05
Dockerfile - SCRATCH  (0) 2024.03.05
Dockerfile - ARG / COPY / VOLUME  (0) 2024.03.05
Docker image 가 만들어지는 과정  (0) 2024.03.05
Dockerfile - EXPOSE / WORKDIR  (0) 2024.03.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
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
글 보관함