uuuhhh
아주조코
uuuhhh
  • 전체 (68)
    • Cloud (22)
      • AWS (17)
      • NCP (4)
      • Tech (1)
    • Kubernetes (16)
    • Docker (1)
    • CI/CD (13)
    • Network (4)
    • OS (10)
      • Linux (9)
      • Concepts (1)
    • Language (0)
      • Golang (0)
    • Project (1)
      • Drone (1)
    • 요모조모 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • ⚠️ 2022/11/08 - 11/13 블로그 이관 작업 ⋯

인기 글

태그

  • docker
  • Jenkins
  • 데이터베이스
  • EC2
  • service
  • Iam
  • LoadBalancer
  • network
  • NKS
  • CI
  • AWS
  • minikube
  • ncp
  • kubernetes
  • Instance
  • pod
  • NodePort
  • argocd
  • build
  • Linux

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
uuuhhh

아주조코

Jenkins Front-End Dockerizing
CI/CD

Jenkins Front-End Dockerizing

2022. 12. 15. 09:22

👀 Epilogue


  • 앞선 Jenkins로 React 빌드를 진행하였다.
  • 빌드 산출물을 배포하기 위해선 Docker Image로 패키징 해야 한다.
  • Dockerfile을 작성하고 Jenkins로 Dockerizing을 진행해보자!

 

 

⚡ Leggo


 

▪ Nginx 설정 파일

  • /conf/conf.d/default.conf에 Nginx 설정 파일 필요
server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;

        index  index.html index.htm;
        try_files $uri $uri/ /index.html;

    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 

 

▪ Multi Stage Build

  • 예를 들어 빌드 환경 / 배포 환경을 나눠서 이미지 빌드
  • 필요 없는 환경을 제거하고 최종적으로 필요한 환경만 남는다.
  • 컨테이너 이미지 경량화 가능
FROM node:12.16.2 as builder

...

FROM nginx:latest

...

COPY --from=builder /usr/src/app/build /usr/share/nginx/html

 

▪ React Application 배포

  • nginx의 기본 설정을 삭제하고 Application 소스에서 설정한 파일을 복사
  • 소스 코드에 /conf/conf.d 파일이 있어야 함
  • Jenkins에서 생성한 Application의 빌드 산출물을 nginx의 기본 Sample Application이 사용하던 폴더로 이동

 

  • Dockerfile
FROM nginx:latest

RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx

COPY build /usr/share/nginx/html
EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

 

  • Jenkinsfile
pipeline{
    agent {
        kubernetes{
            yamlFile 'KubernetesPod.yaml'
        }
    }

...
 
        stage('Docker Image Build'){
            steps{
                container('docker'){
                    dir('front'){
                        sh "docker build . -t ${dockerHubRegistry}:${currentBuild.number}"
                        sh "docker build . -t ${dockerHubRegistry}:latest"
                    }
                }
            }
            post{
                failure{
                    echo 'Docker image build failure!'
                }
                success{
                    echo 'Docker image build success!'
                }
            }
        }
...

 

 

▪ 부록 🌻


  • e.g.) --from=builder
    • 앞에서 builder로 지정한 환경에서 파일을 가져와서 최종 이미지에 파일을 추가하는 의미
FROM node:12.16.2 as builder

...

FROM nginx:latest

...

COPY --from=builder /usr/src/app/build /usr/share/nginx/html

 

 

ref.


[Devops] React 프로젝트 Docker이미지 만들기(Dockerizing)

저작자표시 (새창열림)

'CI/CD' 카테고리의 다른 글

ArgoCD Manage Secrets  (0) 2022.12.15
Jenkins Front-End React Build  (0) 2022.12.15
ArgoCD Application Create  (0) 2022.12.14
Jenkins Kubernetes Manifest Deploy  (0) 2022.12.14
Jenkins Docker Image Push  (0) 2022.12.14
    'CI/CD' 카테고리의 다른 글
    • ArgoCD Manage Secrets
    • Jenkins Front-End React Build
    • ArgoCD Application Create
    • Jenkins Kubernetes Manifest Deploy
    uuuhhh
    uuuhhh
    피땀눈물의 삽질기

    티스토리툴바