ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws EFS and k8s
    Infra & Tools/Docker&K8s 2022. 8. 18. 23:00

     

    현 상황 :

    AWS ECS  와 ALB 를 설정해둠

     

    AWS Fargate는 서버를 관리하지 않고도 애플리케이션 구축에 초점을 맞출 수 있도록 지원하는 종량제 서버리스 컴퓨팅 엔진입니다. 

     

     

     

    Elastic File System :

     

    Docker container 종료시 기본적으로 데이터가 삭제가 된다.

    이는 볼륨을 추가적으로 설정하여 컨테이너가 종료가 되어도 데이터를 보존 하는 방식으로 사용하는데,

    Elastic Container System도 이와 같은 기능이 있다.

    Elastic File System.

     

    EFS 를 이용하면 하드 드라이브에 연결이 가능하다.

    BindMount : 우리가 모르는 장소에 데이터가 저장이 된다.

    EFS : 우리가 알 수 있는 장소에 데이터가 저장 된다.

     

    DB 구축시 고려 사항.

     

    AWS RDS,, 나올줄 알았지만 강의는 Mongo DB Atlas 를 다룬다.

    최종  Targegt 아키텍처

     

    개발을 완료를 했다고 바로 배포를 하지 않고 product 에 맞게 최적화를 시키는 작업이 필요하다.

     

    React script 를 보면 다음 두가지의 경우가 있다.

      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        ...}

     

    Start. 는 개발용이다.  start 로 실행할시  다음 frontend app.js코드를 브라우저 친화 적인 코드로 변화를 시킨다.

      return (
        <div>
          {error && <ErrorAlert errorText={error} />}
          <GoalInput onAddGoal={addGoalHandler} />
          {!isLoading && (
            <CourseGoals goals={loadedGoals} onDeleteGoal={deleteGoalHandler} />
          )}
        </div>
      );

    브라우저는 위의 코드를 실행하지 않습니다. == > 개발 중에는 필요하지만 제품 배포용에는 적합하지 않습니다.

     

    build 는 배포용 입니다.  컴파일 및 최적화를 하여 start 보다 가볍고 최적화된 파일을 내보냅니다. 

     

     

     

    개발용으로 설정해둔 node 서버 , -> frontend release 에서는 필요없다. (당연한 말..)

     

    Dockerfile.prod

    FROM node:14-alpine as build
    
    WORKDIR /app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    CMD ["npm, "run, "build"]

     

    포트 노출이 없으니 삭제, start -> build 로 바꿔준다.

     

     

    결과 : 최적화된 파일 

     production 에서 이용이 가능한가 ->  x  

    서버가 필요하다.

     

     

    Multi -Stage Build

     

    사용법 : FROM  명령은 새 스테이지를 만든다.

     

    copy --from=build 를 통해 (1 줄에 as build 라는 이름으로 설정해둠) 원하는 스테이지의 최종 결과를 가져온다.

     

    /app/build : 가져올 파일 위치

     

    /usr/share/nginx/html :  복사해서 넣을 위치.

    FROM node:14-alpine as build
    
    WORKDIR /app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    RUN npm run build
    
    FROM nginx:stable-alpine
    
    COPY --from=build /app/build /usr/share/nginx/html
    
    EXPOSE 80
    
    CMD ["nginx", "-g", "daemon off;"]

    CMD ["nginx", "-g", "daemon off;"] : nginx 를 시작하는 커멘드이다.

    'Infra & Tools > Docker&K8s' 카테고리의 다른 글

    로드벨런서 역할 및 특징  (0) 2022.08.18
    Container Service AWS ECS vs k8s  (0) 2022.08.04
    Docker-Network 기초  (0) 2022.07.14
    Docker - Command  (0) 2022.07.09
    Docker 왕왕 기초 예제  (0) 2022.07.06
Designed by Tistory.