작업1: 노드js 와 Mysql 디비를 사용해 이미지 업로드 및 변환binary데이터를 DB에 저장.(실제 물리적파일이아나고, DB에 저장됨)
위 Nodejs 앱(마이크로서비스)만 제작 및 작동 확인 > 쿠버네티스로 도커 이미지 만들고, 배포하는 하는 작업은 다음 포스트에서...
마이크로서비스 앱 사용법:
- 이미지 업로드:
~/app_node/imagini $> curl -H 'Content-Type: image/png' --data/binary @example.png http://localhost:3000/uploads/test.png
- 업로드된 이미지 확인
~/app_node/imagini $> curl --head http://localhost:3000/uploads/test.png
- 이미지 조작(웹브라우저에서 확인)
http://localhost:3000/uploads/test.png?blur=10 (블러효과처리)
- 업로드된 이미지 삭제(Db에서 삭제)
~/app_node/imagini $> curl -v -X DELETE http://localhost:3000/uploads/test.png
- 업로드된 이미지 통계 확인(전체 이미지수,전체 이미지 크기, 이미지를 마지막으로 업로드한 시각, 전체 앱 서비스가 실행된 시간)
~/app_node/imagini $> curl http://localhost:3000/stats
DevOps 파이프라인 하드웨어 구성(서버 1대로 도커 빌드, 미니kube 클러스터에 배포및 pods(컨테이너)관리)
1. 프라이빗 클라우드 서버: 우분투+미니쿠보(쿠버네티스)
- 이전 포스트 참조 ( 워드프레스 웹사이트 도커기반 쿠버네티스로 프로비저닝 하기_1 )
2. 개발 PC: 위 클라우드 서버에서 App개발, 내용: 노드js(Express)와 MysqlDB로 이미지변환 및 DB저장하기 App.
- 지난번 구름IDE에서 작업한 노드js 개발App 이 있으나, 구름IDE에는 도커를 설치할 수 없어서... 위 서버에서 개발하기로 함.
- 개발툴: Visual Studio Code 설치( 기술참조: https://shshsh.tistory.com/132 )
내역: 마이크로소프트 사이트 https://code.visualstudio.com/ 에서 데비안계열 deb 설치파일 다운받은 후 아래 데비안패키지 명령으로 설치하면 끝
~/ $ sudo dpkg -i code_1.35.0-1559611369_amd64.deb
- 개발언어: Node.js 8 이상 설치> nvm로 설치
> 기술참조: https://itstory.tk/entry/Ubuntu-1604-nodejs-%EC%99%80-npm-%EC%84%A4%EC%B9%98 )
내역:
~/$> mkdir app_node (폴더 생성 후 이동)
~/app_node$> sudo apt-get install build-essential libssl-dev
~/app_node$> curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh
~/app_node$> bash install_nvm.sh (설치)
~/app_node$> source ~/.profile (nvm사용)
~/app_node$> nvm ls-remote (설치가능한 노드버전 확인)
~/app_node$> nvm install 10.15.3 (이전에 실행한 구름IDE와 같은 버전 설치)
여러 버전의 Node.js를 설치했다면 다음과 같이 특정 버전으로 변경하여 사용할 수 있습니다. ( $> nvm use 6.0.0 )
~/app_node$> node -v (또는$> nvm ls 설치확인. npm 6.4.1 까지 한꺼번에 설치 됩니다.)
- DB설치: Mysql 설치(root사용자 암호지정: 기술참조: https://all-record.tistory.com/183#recentComments )
- 실전! Node.js 마이크로서비스 개발 책 4장 소스 참조 imagini.tar (내용수정은 아래 내용참조)
출처:위키북스(내용수정은 아래 내용참조)
- ~/app_node/ 위 imagini.tar 파일 다운받음.
- ~/app_node/$> tar -xvf imagini.tar (자동으로 imagini 폴더가 만들어지고 압축이 풀림)
- 프로젝트명: imagini (Express:package.json + Mysql:settings.json)
- ~/app_node/imagini $> settings.json (DB접속설정 root:root@... 에서 root(아이디):root(암호) 를 본인이 설치시 입력한 root암호로 변경)
- ~/app_node/imagini $> package.json (main 시작파일 index.js 를 imagini.js로 변경)
- ~/app_node/imagini $> npm install (패키지의존성파일들설치. package.json 파일이 있으므로 npm init 초기화 실행은 건너띈다.)
- ~/app_node/imagini $> node imagini.js 로 실행결과(아래)
db: ready
app: ready
- 노드App종료 2가지방법( $ jobs 로 현재 러닝중인 앱 확인가능)
Ctrl+C 키로 앱종료.
또는 노드앱이 백그라운드로 실행시($ node imagini.js & ) $ ps aux | grep node 로 프로세스ID숫자확인 후 $ kill -9 14939 로 중료.
*앱결과확인을 위한 DB툴 설치:
- 디비버(아파치라이센스2: 워크벤치와 같은 무료 DB관리툴) 우분투용 다운로드: https://dbeaver.io/ (이클립스 기반으로 만들어짐)
우분투(데이안계열) Deb설치파일 실행이 되지 않을때, 아래와 같은 명령어로 설치 가능
$ sudo apt-get install gdebi
$ sudo dpkg -i downloaded.deb
$ sudo apt-get -f install
작업결과(아래 : Mysql디비에 접속해서 이미지test.png 레코드가 등록된 것을 확인-上, 브라우저에서도 확인-左下, 노드App실행-右下)
Ps. 위 디비버 설치중에 java 의존성때문에 open-java가 설치됨. javac 컴파일러가 설치되지 않아서 open-jdk 설치
$ sudo apt-get install openjdk-8-jdk
결과확인: $ java -version | $javac -version
클라우드 파스타 전문가 교육 수료 (0) | 2019.07.27 |
---|---|
DevOps 파이프라인 구성_2(제작한 마이크로 서비스 앱을 쿠버네티스에서 실행) (0) | 2019.06.11 |
컨테이너(쿠베_도커)를 이용해 클라우드 네이티브 앱(마이크로서비스) 구축 (0) | 2019.06.09 |
워드프레스 웹사이트 도커기반 쿠버네티스로 프로비저닝 하기_2 (0) | 2019.06.08 |
워드프레스 웹사이트 도커기반 쿠버네티스로 프로비저닝 하기_1 (0) | 2019.06.06 |
댓글 영역