私はNode.jsとDockerを同時に学習しようとしています。私はポートでリッスンして文字列を返す非常に単純なNode.jsアプリケーションを持っています。ローカルで実行しているときは、Nodeアプリケーション自体が正常に動作します。私は今Dockerコンテナで動作させようとしていますが、私はそれを手に入れることはできません。単純なDocker Node.js Webアプリケーションと通信できません
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
var count = 0;
var server = http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end("Here's the current value: " + count);
console.log('Got a request: ', req.url);
count++;
});
server.listen(port, hostname,() => {
console.log(`Server running at http://${hostname}:${port}/`);
});
マイDockerfile:
は、ここに私のノードアプリです
FROM node:latest
MAINTAINER Jason
ENV PORT=3000
COPY . /var/www
WORKDIR /var/www
EXPOSE $PORT
ENTRYPOINT ["node", "app.js"]
私のビルドコマンド:
docker build -t jason/node .
そして、私のrunコマンド:
docker run -p 3000:3000 jason/node
app.jsファイルとDockerfileは、コマンドを実行しているディレクトリと同じディレクトリにあります。ドッカーのPSを実行すると、アプリケーションが実行中であることがわかりますが、ブラウザで127.0.0.1:3000にナビゲートすると、サイトにエラーが発生することはありません。また、app.jsがイメージに正しく追加されていることを確認しました。実行後に「http://127.0.0.1:3000/で実行中のサーバー」というメッセージが表示されます。
私は何か本当にシンプルな何かが欠けていると思いますか?
'hostname'を省略するか、listen関数に '0.0.0.0'を使用してください。それを 'server.listen(port、 '0.0.0.0'、()=> { console.log(' http:// $ {hostname}:$ {port}/'); }で実行しているサーバ)にします。 ' – Yuva
それは、ありがとうゆうバでした!答えを作成し、それを選択します。 – Jason