@Davidaa_WoW

Почему не работает node сервер внутри контейнера Docker?

Сам по себе сервер при обычном запуске вполне себе работает.
Файл server.js:
const http = require("http");
const fs = require("fs");

const server = http.createServer((req, res) => {
  switch (req.url) {
    case "/":
      fs.readFile("categories.html", "utf-8", (err, html) => {
        if (err) {
          console.log(err);
        } else {
          res.writeHead(200, { "Content-Type": "text/html" });
          res.end(html);
        }
      });
      break;
    case "/style.css":
      fs.readFile("style.css", "utf-8", (err, html) => {
        if (err) {
          console.log(err);
        } else {
          res.writeHead(200, { "Content-Type": "text/css" });
          res.end(html);
        }
      });
      break;
    case "/index.js":
      fs.readFile("index.js", "utf-8", (err, html) => {
        if (err) {
          console.log(err);
        } else {
          res.writeHead(200, { "Content-Type": "text/javascript" });
          res.end(html);
        }
      });
      break;
    default:
      console.log(req.url);
      res.writeHead(200, { "Content-Type": "text/plain" });
      res.end("error 404");
      break;
  }
});

server.listen(8000, () => console.log("Up"));


Но когда я его упаковываю в контейнер:
Файл Dockerfile
FROM node:latest

ADD server.js .
ADD categories.html .
ADD dishes.html .
ADD style.css .
ADD index.js .

EXPOSE 8000
CMD ["node", "server.js"]


То соединения по localhost:8000 нет.
Хотя при запуске контейнера и выводится сообщение "UP"
Что я делаю не так?
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
@mureevms
Как запускаете контейнер?
EXPOSE 8000 не открывает порт, а указывает запускающему не забыть это сделать.
Используйте ключ при запуске для открытия порта -p 8000:8000
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы