Infra/CI-CD
-
배포 - 운영환경을 위한 NginxInfra/CI-CD 2023. 1. 1. 12:42
Nginx 개발 환경에서 리액트가 실행되는 과정 리액트 컨테이너 안에 개발서버가 있고 정적인 파일들이 있다. 브라우저에서 http 요청을 주면 개발서버를 통해서 브라우저에서 요청한 정적파일을 알맞게 제공을 해준다. 운영 환경에서 리액트가 실행되는 과정 운영환경에 가면 개발서버가 없어진다. 그래서 운영환경에서 브라우저가 어떠한 요청을 주면 그에 맞게 정적파일을 제공해주어야 한다. 하지만 운영환경에는 개발서버가 없다. 그렇다면 어떻게다면 어떻게 해야할까? 그때가 바로 nginx가 출현하는 시점이다. 운영환경에 배포하는 파일들 개발서버 대신에 nginx 웹 서버가 정적파일들을 제공해주게 된다. 이때 붉은색 눈금으로 표신된 정적파일들은 npm run buil명령어로 생서된 build폴더에 포함된 폴더와 파일들의..
-
배포 - 생성된 도커 이미지로 로컬에서 리액트 실행해보기Infra/CI-CD 2023. 1. 1. 11:49
이전 포스트에서 리액트를 실행 할 수 있는 도커 이미지를 생성했다. 이번엔 포스트에서는 해당 이미지를 바탕으로 컨테이너를 run해서 리액트 앱을 실행해 본다. react-app image Container로 run docker run -p 3000:3000 이미지이름 원래는 위 명령어로 실행이 가능 했었는데 리액트 쪽 업그레이드로 인해 다음과 같이 -it 붙여야만 실행가능하게 되었다. docker run -p -it 3000:3000 이미지이름 docker run -it 옵션 도커 컴포즈로 좀 더 간단하게 앱 실행하기 docker-compose를 이용한 어플리케이션 실행 docker-dompose up docker-compose.yml 에 설정한 stdin_open: true 옵션이 docker run ..
-
배포 - 도커를 이용해 간단한 리액트 앱 만들어보기Infra/CI-CD 2022. 12. 31. 13:36
리액트를 설치하기 위한 명령어 npx create-react-app react-app // 마지막은 리액트를 설치하고자 하는 디렉토리 이름이다. 리액트 개발에 대한 간략 설명 개발 단계 npm run start 리액트 앱을 실행하기 위한 명령어이다. 테스트 단계 npm run test 개발이 완료 되었다면 개발한 것에 문제가 있는지 없는지 테스트를 해볼 수 있다. 테스트는 위 명령어로 할 수 있다. 배포 단계 npm run build 테스트까지 완성이 된면 이제는 배포를 통해 다른사람도 앱을 이용할 수 있도록 운영 환경에 배포할 수 있다. 그러기 위해서는 그냥 소스를 옮기는 것이 아니라 build를 해서 운영환경에 배포할 수 있는 위한 폴더와 파일들을 생성해야한다. 위 명령어를 통해 폴더와 파일을 생성할..
-
배포 - Docker compose 컨테이너를 멈추기Infra/CI-CD 2022. 12. 31. 11:52
docker-compse를 통해 작동시킨 컨테이너들을 한꺼번에 중단 시키려면 docker compose down명령어를 통해 동작을 중지 시킬 수 있다. docker compose down 명령어 docker-compose 명령어를 실행시키려면 위와 같이 터미널을 사용해서 docker-compose.yml파일이 있는 경로까지 들어가 줘야한다. 해당 경로에서 docker-compose down 명령어를 실행하면 실제로 docker-compose가 모두 중단 된 것을 확인할 수 있다. docker compose up VS docker compose up --build docker compose -d 옵션 docker compose up -> docker compose -d up [출처 - https://ww..
-
배포 - Docker Compose 파일 작성하기Infra/CI-CD 2022. 12. 31. 11:19
Docker Compose는 컨테이너 사이에 네트워크를 연결해준다. 그러면 본격적으로 Docker Compose 파일을 작성해보자 Docker Compose 파일 생성 Docker Compose는 yaml파일로 작성된다. yaml 파일 이란? YAML ain't markup language의 약자이며, 일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용 프로그램에서 사용되고 원래는 XML이나 JSON 포맷을 자주 사용해 왔지만, 좀더 읽기 쉬운 포맷으로 최근 각광받고 있다. 작성하게될 docker-compose파일 구조 redis서버와 node서버를 구동하는 각각 Docker Container가 있고 그리고 Container를 감싼 것을 Services라고 한다. 그리고 docker-compose..
-
배포 - Docker Compose에 대하여Infra/CI-CD 2022. 12. 31. 10:03
docker compose는 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구이다. 🎯페이지를 새로고침 했을때 숫자0부터 1씩 올라가는 간단한 앱을 만들어 보면서 예시 앱을 만든다. 어플리케이션의 전체 구성 레디스 Redis(Remote Dictionary Server)는 메모리 기반의 키-값 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터베이스(NoSql)이다. 레디스를 쓰는 이유 메모리에 저장을 하기 때문에 Mysql같은 관계형 DB에 저장하는 것보다 훨씬더 빠르게 데이터를 불러올 수 있으며, 비록 데이터를 메모리에 저장한다고 해도 영속적으로 보관이 가능하다. 그래서 서버를 재 부팅해도 데이터를 유지할 수 있는 장점이 있다. Node...
-
배포 - Docker Volumes에 대하여Infra/CI-CD 2022. 12. 30. 20:04
Application소스 변경으로 다시 재build 시 효율적으로 하는 법을 통해 종속성 모듈의 변화가 없을 시에는 RUN명령을 다시 실행하지 않아도 되었습니다. 하지만 아직도 소스코드가 변경될 때마다 변경된 소스코드 부분은 COPY를 한 후에 image를 다시 build해준뒤에 다시 Docker Container를 run해줘야 변경된 소스코드가 반영됩니다. 이러한 작업은 불필요한 시간의 소요를 발생시키고 image의 빌드 횟수도 빈번하게 합니다. 이러한 문제점을 해결하기위해 Volume을 사용하게 됩니다. COPY명령어를 통한 컨테이너 실행의 문제점은 image를 다시 build해줘야 로컬의 소스코드의 변경사항이 도커 컨테이너에도 반영된다는 점이다. Volume이라는 것은 Docker Container..
-
배포 - Application소스 변경으로 다시 재build 시 효율적으로 하는 법Infra/CI-CD 2022. 12. 25. 18:43
어플리케이션 소스 변경으로 다시 빌드하는 것에 대한 문제점 어플리케이션을 만들다 보면 소스 코드를 계속 변경시켜줘야 하며 그에 따라 변경된 부분을 확인하면서 개발을 해나가야 합니다. 그래서 도커를 이용해서 어떻게 실시간으로 소스가 반영되게 하는지 알아 보겠습니다. 현재까지 도커 컨테이너로 어플을 실행한 순서 소스코드를 계속 변경시켜 변경 된 부분을 어플리케이션에 반영시키려면 위 그림과 같은 과정을 (이미지 부터)다시 반복해야 한다. local에 있는 server.js 코드 변경 소스를 바꾼이후에 해당 localhost환경에 접속해도 화면에는 여전히 "Hello World"가 표시된다. 위 과정을 반복하는 것의 비효율적인 점들 1. COPY ././ 이 부분때문에 소스에 변화를 시킨 부분은 server.j..