-
aws EFS and k8sInfra & Tools/Docker&K8s 2022. 8. 18. 23:00
현 상황 :
AWS ECS 와 ALB 를 설정해둠
AWS Fargate는 서버를 관리하지 않고도 애플리케이션 구축에 초점을 맞출 수 있도록 지원하는 종량제 서버리스 컴퓨팅 엔진입니다.
Elastic File System :
Docker container 종료시 기본적으로 데이터가 삭제가 된다.
이는 볼륨을 추가적으로 설정하여 컨테이너가 종료가 되어도 데이터를 보존 하는 방식으로 사용하는데,
Elastic Container System도 이와 같은 기능이 있다.
Elastic File System.
BindMount : 우리가 모르는 장소에 데이터가 저장이 된다.
EFS : 우리가 알 수 있는 장소에 데이터가 저장 된다.
DB 구축시 고려 사항.
최종 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 보다 가볍고 최적화된 파일을 내보냅니다.
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