티스토리 뷰
◎ 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 |