Я успешно запустил образ докера локально, но не могу отправить ни одного запроса на локальный хост. У меня зависает сокет ошибок в почтальоне, и локальный хост не отправлял никаких данных.
докер-файл
FROM node:20-alpine
MAINTAINER Some Dev
RUN mkdir /app
WORKDIR /app
COPY ./backend /app
RUN npm i
CMD ["npm","start"]
app.ts и небольшой маршрут, к которому я пытаюсь добраться configs.PORT = 5000 configs.HOST = 0.0.0.0
app.get('/hello',async (req:Request,res:Response,next:NextFunction)=>{
res.json("Hello")
})
const startServer = async () => {
try {
await mongoose.connect(configs.DB_URL);
console.info("Connected to MongoDB");
app.listen(+configs.PORT, configs.HOST,() =>{
console.info(`Server listening on ${configs.PORT} and host ${configs.HOST}`);
})
} catch (err) {
throw new ApiError(err.message, err.status);
}
};
startServer();
docker build -t buxonlineappv2 .
docker run -d -p 5555:80 buxonlineappv2
ИДЕНТИФИКАТОР КОНТЕЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАНО СТАТУС НАИМЕНОВАНИЯ ПОРТОВ 6fd90778e2df buxonlineappv2 "docker-entrypoint.s…" 51 секунда назад Up 39 секунд 0.0.0.0:5555->80/tcp jolly_saha
Сначала я добавил хост 0.0.0.0. Пробовал разные порты. Пробовал localhost:5555/hello 0.0.0.0:5555/hello http:localhost:5555/hello
Для вашего configs.PORT
установлено значение 5000, поэтому ваше приложение прослушивает порт 5000.
Это означает, что именно этот порт вам нужно сопоставить на стороне контейнера. Прямо сейчас вы сопоставляете порт 80 с помощью
docker run -d -p 5555:80 buxonlineappv2
Вы должны сопоставить порт 5000 следующим образом.
docker run -d -p 5555:5000 buxonlineappv2
и это должно работать.
поскольку ваш сервер прослушивает порт 5000, вам следует запустить эту команду для запуска контейнера:
docker run -d -p 5555:5000 buxonlineappv2
так что порт 5555 на картах хоста и порт 5000 в контейнере.
Эта команда сработала.
docker run -d -p 5555:80 buxonlineappv2
Поскольку я первым ответил на ваш вопрос, а @Tarique только что скопировал его, я был бы признателен, если бы вы отметили мой ответ как принятый.