본문 바로가기

전체 글

(103)
Error: Connect econnrefused 예... 처음엔 누구나 그럴싸한 계획을 갖고 있죠... 금방 끝날 줄 알았던 도커는 저를 참교육 하기 시작했습니다. 범인은 바로 요녀석입니다. Node에서 MySQL과 연결이 무슨 짓을 해도 안되던 겁니다. 옆친데 덮친격으로 아침 모닝콜로 시원하게 회사 면접 탈락 통보도 받았습니다.😢😢 멘탈은 탈탈 털렸지만 어쩌겠습니다... 예,,, 해야죠 ,,, 다시 삽질을 지구 멘틀 끝 까지 하다 결국 성공했습니다. 그러면서 기존 작성한 코드를 하나하나 분석하게 되어서 한번 살펴 보겠습니다. 작성자의 멘탈이 아주 안좋아 글이 다소 중구난방일 수 있습니다. 우선 파악한 원인은 바로 MySQL을 시작하기 전에 Node Server가 구동되는 것 이었습니다. 대략적인 파일 구조입니다. 디렉토리 별로 맨 위부터 살펴 보자구..
Docker + Node.js + Nginx 4 이번엔 MySQL 이미지를 설치해 보겠습니다.root 경로에 작업 폴더를 생성해줍시다. mysql/conf.d/my.conf에는 다음과 같이 작성해 줍시다. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake=FALSE init-connect='SET NAMES utf8' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci bind-address=0.0.0.0 기본적인 encoding 설정은 제외하고 bind-address=0.0.0.0 은 사용 가능한 모든 네트워크 인터페이스를..
Docker + Node.js + Nginx 3 이번엔 docker-compose를 사용해서 nginx , nodejs multi container 환경을 만들어 보겠습니다. docker-compose란? 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구입니다. docker-compose를 사용하는 이유 docker-compose를 사용하지 않으면 웹 어플리케이션을 테스트할 때 웹 서버 컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각 생성해야합니다. 매번 run 명령어에 옵션을 설정해 CLI로 컨테이너를 생성하기보다는 여러 개의 컨테이너를 하나의 서비스로 정리해 컨테이너 묶음으로 관리할 수 있다면 좀 더 편리할 것입니다. 프로젝트 루트 경로에 nginX의 root 경로..
Docker + Node.js + Nginx 2 본격적으로 Visual Studio에서 Docker를 설치하고 개발 환경을 세팅 하겠습니다. node js와 express 기본적으로 설치되어 있다는 가정하에 진행하겠습니다. server.js 파일을 생성하여 다음과 같이 입력해줍니다. const express = require('express') const app = express() const port = 3000; app.get('/', (req, res) => { res.send('Docker with nodejs') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) VS Code를 사용하여 Docker extension을 설치해야 합니다. Exte..
Docker + Node.js + Nginx 1 서론 Node 서버를 만들다 도커를 사용해 Nodejs와 Nginx를 한번에 배포할 수 있는 방법을 보게 됐다. AWS 프리티어가 만료 되서 아마 로컬 환경에서만 서버를 구동 할것 같지만 그래도 잼있어 보여서 도전해보려 한다. Docker 단어 자체의 뜻은 항만에서 컨테이너를 싣는 것과 같은 일하는 노동자를 의미 하는데요, 컨테이너라는 말을 보니까 의미만 봐도 무언가를 싣는 것과 관련이 있어 보입니다. 소프트웨어를 빌드하고 Deploy(배포)할 때 각기 다른 환경에서 하게 된다면 엄청난 비효율이 발생하기 때문에 도커는 바로 이 컨테이너라는 독립적인 환경을 구성할 수 있게 해주는 오픈소스 프로젝트입니다. 도커도 가상화 기술의 한 종류인데 기존 가상화 비교했을 때 기술과 어떤 차이가 있고 어떤 장점이 있어 ..
Node.js Multer 이미지를 저장하는 간단한 Node.js 서버를 만들어보겠습니다. express 프레임 워크는 이전장에서 설치했으니 이 과정은 재끼겠습니다. multer와 mysql2 패키지를 설치 합시다. npm install --save multer mysql2 Multer란? Multer는 파일 업로드를 위해 사용하는 Node.js의 미들 웨어랍니다. multipart/form-data 형식으로 파일 업로드를 지원하기 때문에 가장 많이 사용해요. 첫번째로 필요한 모듈들을 호출해주고 포트 번호를 지정해줍니다. 저는 Node.js를 사용하니 포트 번호는 3000번이네요. const express = require('express'); const multer = require('multer'); const mysql = ..
HTTP multipart/form-data 이번엔 node.js로 이미지를 전송하는 서버를 만들던 중 multipart/form-data란 개념이 있어 알아보고 HTTP, multipart에 대해서도 알아보겠습니다. 1. HTTP(Hypertext Transfer Protocol)란? 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 클라이언트에서 서버에 파일을 업로드 할 때 웹 브라우저에서는 form으로 파일을 전송합니다. 웹 브라우저가 전송하는 HTTP 메시지는 Content-Type 속성이 multipart/form-data로 지정되 정해진 형식에 따라 메시지를 인코딩해 전송합니다. 이를 처리하기 위해 서버에서는 멀티파트 메시지에 대해 각 파트별로 분리해 개별 파일의 정보를 얻게 됩니다. 이 때 png나 jpg 처럼 파..
Nginx와 Node.js 쿵짝쿵짝 환경 구축하기 이전 글에서 웹 서버인 Nginx에 대해 살펴 봤으니 이번엔 백엔드를 환경을 구축할 Node.js를 알아 보고 환경 구축까지 진행해 보겠습니다. Node.js는 Chrome V8 javascript 엔진으로 빌드된 Javascript Runtime이다. 이게 무슨 말인가... Node.js는 Chrome의 V8 엔진을 이용해 Javascript로 브라우저가 아닌 서버를 구축하고 서버에서 JS가 작동되도록 해주는 런타임 환경(플랫폼)이라는 말이다!! Node.JS의 강점 중 하나는 바로 Non-Bloking I/O 입니다. Blocking I/O vs. Non-blocking I/O Blocking I/O: 한 번에 하나의 작업만 처리하고, 해당 작업이 완료될 때까지 다음 작업으로 넘어가지 않습니다. 대표..