Infra/CI-CD
-
배포 - Multi App을 만들기 위한 Docker Compose 파일 작성하기Infra/CI-CD 2023. 1. 6. 15:30
docker-compose.yml 작성 nginx,프론트엔드, 백엔드, MySQL 각각을 컨테이너를 위한 도커파일을 작성했다. 하지만 그들 컨테이너들을 다 작동 시킨다고 생도 컨테이너 환경 특성사 서로 독립적으로 존재하기 때문에 별도의 설정을 하지 않으면 독립된 컨테이너 끼리 서로 통신을 할 수 없다. 그래서 이번 게시물에서는 컨테이너들을 서로 연결시켜주기 위해서 Docker Compose를 작성한다. docker-compose.yml verion: "3" services: frontend: build: dockerfile: Dockerfile.dev context: ./frontend volumes: - /app/node_modules - ./frontend:/app stdin_open: true ng..
-
배포 - Multi App을 만들기위한 Dockerfile (Nginx)Infra/CI-CD 2023. 1. 6. 13:45
Nginx를 위한 도커 파일 만들기 클라이언트에서 Request를 보낼 때 Nginx를 이용해서 프론트와 서버에 나눠서 보내 줄 수 있다. 어떤 형태로 URL을 보내는지에 따라 나눠 보내진다. Nginx 프록시 기능 Nginx는 어떤식으로 프록시 기능을 제공할까? 클라이언트에 요청을 보낼때 정적 파일을 원하는 경우 Nginx 설정에 따라 자동적으로 ReactJS를 통해 응답을 보내주고, API 요청일 경우에는 NodeJS를 통해 응답을 보내준다. Nginx가 요청을 나눠서 보내주는 기준을 URL로 location이 /로 시작하는지, /api로 시작하는지에 따라서 나뉜다. Proxy기능을 위한 Nginx설정 전체 프로젝트를 위한 root 폴더에 프록시를 위한 nginx 폴더를 생성해주고 그안에 nginx ..
-
배포 - Multi App을 만들기위한 Dockerfile (MySQL)Infra/CI-CD 2023. 1. 5. 19:07
DB 구성 개발 환경 운영 환경 Docker를 이용한 MySQL DB 구성 MySQL Dockerfile 작성 Dockerfile FROM mysql:5.7 MySQL을 시작할 때 Database와 Table이 필요한데 그것들을 생성할 장소를 만들어 준다. Database와 Table 만들기 initialize.sql DROP DATABASE IF EXISTS multiapp; CREATE DATABASE multiapp; USE multiapp; CREATE TABLE lists ( id INTEGER AUTO_INCREMENT, values TEXT, PRIMARY KEY (id) ); 한글도 data로 저장가능하도록 설정 한들도 data도 저장이 가능하도록 설정파일에 추가할 내용을 작성한 뒤에 Do..
-
배포 - Multi App(ReactJS/NodeJS)와 위한 Dockerfile 만들기Infra/CI-CD 2023. 1. 5. 16:08
ReactJS - 프로트 서버 Dockerfile.dev FROM node:16-alpine WORKDIR /app COPY package.json ./ RUN npm install COPY ./ ./ CMD ["npm","run","start"] Dockerfile 위 파일에서 구동할 nginx 서버는 정적 파일을 serve하기 위한 프론트엔드 영역내에서 사용될 nginx이다. 정적file serve를 위한 Nginx 서버 설정 location / {} 안에 root 뒤에 명시된 경로에 build폴더를 넣어 두면 location/ 경로로 요청이 왔을때 해당하는 요청이 왔을때 의도된 적절한 파일이 대응해서 응답될 수 있다. root 뒤에 명시된 경로는 기본적으로 지정된 것도 있지만 해당 설정파일을 통해 ..
-
배포 - Docker를 이용한 복잡한 어플리케이션 만들기 (설계)Infra/CI-CD 2023. 1. 5. 12:46
풀스택 어플리케이션 (multi-container application) 구현 기능 1. 클라이언트에 input box에 글을 입력한다. 2. 입력된 data가 NodeJS로 구성된 API서버를 거쳐친다. 3. API 거치 data가 MySQL DB에 저장되 된다. 4. DB에 저장된 data는 다시 클라이언트에 출력된다. 5. 이후에 컨테이너를 삭제했다 다시 생성해도 저장된 데이터는 남아있도록 한다. 두가지 설계 방식 Nginx의 Proxy를 이용한 설계 Nginx를 이용하여 클라이언트에서 오는 요청을 백엔드 서버와 프론트 서버로 나눠주는 구조이다. 클라이어트와 프론트앤드 백앤드 서버들간 사이에 Nginx가 자리하고 있다. 클라이언트가 여러가지 요청을 보낼때 location/api~~~ 요청을 보내면 ..
-
배포 - AWS Elastic BeanstalkInfra/CI-CD 2023. 1. 3. 10:49
사용할 AWS 서비스들에 대한 설명 EC2(Elastic Compute Cloud) Amazon Elastic Container Service(Amazon ECS)는 확장성이 뛰어나고 빠른 컨테이너 관리 서비스이다. 이를 사용하여 클러스터에서 컨테이너를 실행, 중지 및 관리할 수 있습니다. Amazon ECS에서 컨테이너는 서비스 안에 개별 task나 여러 task를 실행한다. 사용하는 task 정의에 정의된다. 이 컨텍스트에서 서비스는 클러스터에서 지정된 수의 task를 동시에 실행하고 유지하는 데 사용할 수 있는 구성이다. AWS Fargate에서 관리하는 서버를 사용하지 않는 인프라에서 task 및 서비스를 실행할 수 있다. 또는 인프라에 대한 더 세부적인 제어를 위해 관리하는 Amazon EC2 ..
-
배포 - Travis CIInfra/CI-CD 2023. 1. 2. 14:51
Travis CI 설명? Travis CI 는 Github에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration)서비스이다. Travis CI를 이용하면 Github repository에 있는 프로젝트를 특정 이벤트에 따라 자동으로 테스트, 빌드하거나 배포할 수 있다. Travis CI의 흐름 1. 로컬 Git에 있는 소스를 Github 저장소에 Push한다. 2. Github master 저장소에 소스가 Push가 되면 Travis CI에게 소스가 Push 되었다고 얘기를 해준다. 3. Travis CI는 업데이트 되 소스를 Github에서 가지고 온다. 4. Travis CI Github에서 가져온 소스의 테스트 코드를 실행해 본다. 5. 테스트 코드 실행 후 ..
-
배포 - 운영환경을 위한 도커 image를 위한 Dockerfile작성하기Infra/CI-CD 2023. 1. 1. 14:42
Nginx를 포함하는 리액트 운영환경 이미지 생성 일단 image생성을 위한 Dockerfile을 작성한다. Dockerfile.dev -리액트 개발환경에서 필요한 이미지를 생성한다. Dockerfile - 리액트 운영환경에서 필요란 이미지를 생성한다. 개발환경 도커파일과 운영환경 도커 파일 비교 오른쪽 Dockerfile의 FROM부터 CMD까지 명령어는 운영서버에 올리기위한 build 파일을 만들기 위한 과정이다. 그리고 그렇게 build된 파일을 Nginx가 브라우저를 통해 오는 요청에 따라 적절한 파일을 제공해주는 것이다. 그렇게 하기위해서는 먼저 build된 정적인 파일이 존재를 해야 하므로 CMD 명령어로 npm run build 까지 해준다 그리고 그 다음엔 Nginx 서버를 구동하기 위한 ..