Infra
-
배포 - 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..
-
배포 - WORKING DIRECTRORY 명시해 주기Infra/CI-CD 2022. 12. 25. 17:49
Dockerfile의 WORKDIR 명령어 # Create app directory WORKDIR /usr/src/app Docker image는 해당 image안에서 어플리케이션 소스가 복사될 디렉토리를 생성하는 것이다. 그리고 생성 된 디렉토리는 어플리케이션의 working 디렉토리가 된다. 왜 따로 working 디렉토리가 있어야 할까? 현재 Node 이미지 속의 root 디렉토리에는 home,bin, dev 파일등이 있다. ls 명령어를 사용해서 node 안의 디렉토리 custom으로 build한 image의 root 디렉토리 기본으로 제공되는 node image와 다르게 node를 이용해서 server를 구축하기위한 여타 디렉토리와 file들이 들어 있는 것을 확인 할 수 있다. 즉 디렉토리와 ..
-
배포 - 생성한 이미지로 app 실행 시 접근이 안되는 이유(포트 맵핑)Infra/CI-CD 2022. 12. 25. 16:59
현재까지 컨테이너를 실행하기 위해 사용한 명령어 앞으로 컨테이너를 실행하기 위해 사용 할 명령어 새롭게 추가된 부분은 무엇을 위한 부분인가? 컨테이너 내부의 네트워트와 외부에 네트워크를 연결시켜 주어야 한다. 위와 같이 -p 옵션을 통해 Dcoker Container의 내부 포트와 외부 포트를 연결시켜준 뒤에 Docker Container을 띄우면 위 그림과 같이 도커 내부에 띄어진 node 서버에 외부에 브라우저를 통해 접근할 수 있는 것을 확인 할 수 있다. [출처 - https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci/dashboard]
-
배포 - Dockerfile를 이용해서 Docker image buildInfra/CI-CD 2022. 12. 25. 15:25
package.json이 없다고 나오는 이유 (dockerfile copy) 앞으로 만들어야 할 dockerfile 완성본을 보면 COPY라는 것이 존재한다. 왜 이 COPY가 필요한지 package.json문제를 해결하면 서 알아본다. Dockerfile로 이미지를 만들때 Node 베이스 이미지를 사용을 해서 임시 컨테이너를 만든 다음에 임시 컨테이너로 실제 사용을 할 이미지를 만드는 것인데 Node 베이스 이미지를 임시컨테이너로 만들때 파일 스냅샷들이 존재한다. home, bin, dev 디렉토리 같이 많은 것들이 존재한다. 그래서 베이스 이미지에서 파일 스냅샷들을 임시컨테이너에 하드디스크에 먼저 넣어준다. 그 다음 FROM 명령어에 따라 컨테이너에 node:10 이미지를 먼저 넣는다. 그리고 그다음..
-
배포 - Dockerfile 작성하기Infra/CI-CD 2022. 12. 25. 14:23
Dockerfile 작성하기 Node.js 앱을 도커 환경에서 실행하려면 먼저 이미지를 생성하고 그 이미지를 이용해서 컨테이너를 실행한 후 그 컨테이너 안에서 Node.js앱을 실행해야 한다. 그래서 그 이미지를 작성하려면 Dockerfile을 먼저 작성해야 한다. 즉 Dockerfile은 도커 image를 만들기위한 지시서다. Dockerfile 명령어 Dockerfile에 적힌 명령어는 도커 서버에게 무엇을 하라고 알려주는 것이다. # 베이스 이미지를 명시해준다. FROM baseImage # 추가적으로 필요한 파일들을 다운로드 받는다. RUN command # 컨테이너 시작시 실행 될 명령어를 명시해준다. CMD ["executable"] FROM 이미지 생성시 기반이 되는 이미지 레이어이다. : ..
-
배포 - 도커를 통해 실행 시킬 간단한 Node.js 서버 만들기Infra/CI-CD 2022. 12. 25. 13:58
NodeJS공식 홈페이지에서 도커를 이용하여 NodeJS를 이용하는 예시부분을 사용하여 도커를 실전에 도입하는 연습을 한다. https://nodejs.org/ko/docs/guides/nodejs-docker-webapp/ Node.js 웹 앱의 도커라이징 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org - Dockerfile을 어떤식으로 작성하는지 중점적으로 다룬다. FROM node:10 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY .. EXPOSE 8080 CMD["node","server.js"] 도커 컨테이..