본문 바로가기

CentOS/Docker

[Docker]빌더 패턴

반응형

빌더 패턴이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수

있게 하는 패턴이다.

 

경량화에 사용 한다.

 

1. helloworld.go 파일을 빌드 후 실행하는 컨테이너 이미지 생성

[root@localhost test]# mkdir build-pattern
[root@localhost test]# 
[root@localhost test]# cd build-pattern/
[root@localhost build-pattern]# 
[root@localhost build-pattern]# vi helloworld.go

 

package main
import "fmt"
func main() {
	fmt.Println("Hello World")
}

 

[root@localhost build-pattern]# vi Dockerfile

 

FROM golang:1.14
WORKDIR /myapp
COPY helloworld.go .
RUN  go build -o helloworld . 
ENTRYPOINT [ "./helloworld" ]

 

2. 이미지 생성 및 확인

[root@localhost build-pattern]# docker image build -t helloworld:v1 .

 

[root@localhost build-pattern]# docker image ls

 

==============> 이미지 용량 813MB

 

3. 빌드 패턴을 이용해 helloworld.go 파일을 빌드 후 실행하는 컨테이너 이미지 생성

[root@localhost build-pattern]# vi Dockerfile.builder

 

FROM golang:1.14
WORKDIR /myapp
COPY helloworld.go .
RUN  go build -o helloworld . 
ENTRYPOINT [ "./helloworld" ]

 

[root@localhost build-pattern]# vi Dockerfile.runtime

 

FROM alpine:latest  
WORKDIR /myapp
COPY helloworld .
ENTRYPOINT [ "./helloworld" ]

 

4. 두 개의 도커 파일을 순차적으로 빌드하는 스크립트 파일 생성

[root@localhost build-pattern]# vi helloworld-builder.sh

 

docker image build -t helloworld-build -f Dockerfile.builder .
docker container create --name build-container helloworld-build
docker container cp build-container:/myapp/helloworld .

docker image build -t helloworld-runtime -f Dockerfile.runtime .

docker container rm -f build-container
rm -f helloworld

 

[root@localhost build-pattern]# chmod 777 helloworld-builder.sh

 

5. 이미지 생성 및 확인

[root@localhost build-pattern]# docker image build -t helloworld-build -f Dockerfile.builder .

 

[root@localhost build-pattern]# docker container create --name build-container helloworld-build

 

[root@localhost build-pattern]# docker container cp build-container:/myapp/helloworld .

 

[root@localhost build-pattern]# docker image build -t helloworld-runtime -f Dockerfile.runtime .

 

[root@localhost build-pattern]# docker container rm -f build-container

 

[root@localhost build-pattern]# rm -f helloworld

 

[root@localhost build-pattern]# docker image ls

 

==============> 이미지 용량 7.6MB

반응형

'CentOS > Docker' 카테고리의 다른 글

[Docker][k8s]kubespray - kubernetes 설치  (0) 2022.06.04
[Docker][k8s]minikube - helloworld  (0) 2022.06.03
[Docker]CMD vs ENTRYPOINT  (0) 2022.05.25
[Docker]container 접속  (0) 2022.05.25
[Docker]docker container run  (0) 2022.05.25