도커 실행중 발생한 에러

이유진·2022년 2월 19일
0

docker run 명령어를 통해,
컨테이너 실행중
컨테이너 중지를 위해 , control +p,q를 이용해도 중지 안됨

다른 터미널에서 컨테이너 실행 중지 명령어 실행
: docker stop 컨테이너id


  • docker volumn 실행도중 에러
  1. docker build -t 이미지명
    : 이미지 생성

  2. docker run -d -p locohost port:application port -v /user/src/app/node_modules -v $(pwd):/user/src/app dldbwls492/nodejs
    : volumn을 이용한 어플리케이션 실행

2-1. node서버 확인 :

  1. volumn을 이용하여 소스코드 변경하기!
  • 먼저, 실행중인 컨테이너 중지하기
    (node app을 껐다가(중지) 켜야 소스코드의 수정이 반영되기 때문)

    • docker ps 명령어로 실행중인 이미지id 확인하기
  • docker stop 컨테이너id

  • 중지 후, docker run 재실행
    docker run -d -p locohost port:application port -v /user/src/app/node_modules -v $(pwd):/user/src/app dldbwls492/nodejs

  • node 서버 확인

    • 즉, 소스코드 변경 내용을 이미지 재빌드 없이 변경된 소스코드 반영 가능

docker-compose 파일을 작성후, build한 경우에 발생한 에러

에러메세지 : (node:1) UnhandledPromiseRejectionWarning: Error: The client is closed

package.json 👇

{
  "name": "docker-compose-app",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "4.17.3",
    "redis": "4.0.3"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}

server.js 👇

const express = require("express");
const redis = require("redis");

//레디스 클라이언트 생성
const client = redis.createClient({
    host: "redis-server",
    port: 6379
});


// 새로운 어플린케이션(앱) 생성한것
const app = express();
// 어플리케이션(앱) 실행할 내용 구성하기

// 숫자는 0부터 시작
client.set("number", 0);

app.get('/', (req, res) => {
    client.get("number", (err, number) => {
        // 현재 숫자를 가져온 후에 1씩 추가
        // 위에서 받은 number는 type이 str이므로, type 변환 필요 --> parseInt()
        client.set("number", parseInt(number) + 1);  
        res.send("숫자가 1씩 올라갑니다. 숫자: " + number);
    });
});

package.json 에서 redis 버전 수정후 👇

{
  "name": "docker-compose-app",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "4.17.3",
    "redis": "3.0.1"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}
  • velog 작성당시, redis 최신버전 : "4.0.3"
  • redis 버전 : "4.0.3" -> "3.0.1"로 수정

인프런 : 레디스 버전 오류 해결 참고 블로그


도커로 react 실행하기(7강 - 생성된 도커 이미지로 리액트 앱 실행하기 편)

dldbwls492/docker-react-app2로 이미지 생성함
(이미, docker-react-app으로 생성한젹있어서 다시 생성함)

docker run dldbwls492/docker-react-app2
즉, 이미지이름으로 실행하였으나, start가 없다고 에러가 뜸.
package.json 파일을 확인해보아도, script 부분에 start부분이 이미 지정되어 있음
....

Dockerfile.dev 👇

FROM node:alpine

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

CMD ["npm", "run", "strat"]

Dockerfile.dev CMD 명령어 수정후 👇

FROM node:alpine

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

CMD ["npm", "run", "start"]

CMD 명령어 : "strat" -> "start"로 스펠링 오타 수정

profile
차근차근 배워나가는 주니어 개발자

0개의 댓글