我在 StackOverflow 社區上搜索了這個答案,但沒有一個結果,所以我在這里問一個。
我有一個非常簡單的 nodejs 應用程式,它有一個server.js檔案,具有以下內容。
'use strict'
require('dotenv').config();
const app = require('./app/app');
const main = async () => {
try {
const server = await app.build({
logger: true,
shopify: './Shopify',
shopifyToken: process.env.SHOPIFY_TOKEN,
shopifyUrl: process.env.SHOPIFY_URL
});
await server.listen(process.env.PORT || 3000);
} catch (err) {
console.log(err)
process.exit(1)
}
}
main();
如果我在本地啟動服務器作業完美,我可以在網路瀏覽器上看到一個 json。
本地運行時作業服務器的日志:
{"level":30,"time":1648676240097,"pid":40331,"hostname":"Erick-Macbook-Air.local","msg":"Server listening at http://127.0.0.1:3000"}
當我運行我的容器并轉到 localhost:3000 時,我看到一個帶有錯誤訊息的空白頁面:
This page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE
我有這樣的 Dockerfile:
FROM node:16
WORKDIR /app
COPY package.json .
RUN npm install
COPY . ./
EXPOSE 3000
CMD ["node", "server.js"]
這就是我運行容器的方式:
docker run -d -it --name proxyservice -p 3000:3000 proxyserver:1.0
當我運行它時,我看到容器日志正在作業:
{"level":30,"time":1648758470430,"pid":1,"hostname":"03f5d00d762b","msg":"服務器監聽http://127.0.0.1:3000"}
如您所見,它啟動正確,但是當轉到 localhost:3000 時,我看到了該錯誤訊息。知道我錯過了什么/做錯了什么嗎?
謝謝!
uj5u.com熱心網友回復:
您可以0.0.0.0在服務的主機部分添加類似這樣的內容嗎?
server.listen(3000, '0.0.0.0');
那就試一試吧。由于您希望可以從容器外部訪問您的服務,因此您應該將地址指定為0.0.0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/455318.html
