質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

3400閲覧

【CentOS7】docker上のNodejsにアクセスできない

kanimaru

総合スコア1013

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/04/27 06:05

題目の通りです。

Docker上に構築したNodejs+expressのWEBサーバにつながりません。

確認したこと

前提:
・VPS
・CentOS7

  1. docker0のネットワークは 172.17.0.1
  2. nodejsでは 3000port を listenしている
  3. firewall-cmd --reload は行った
  4. ホスト上で curl 172.17.0.1:3000 では期待通り レスポンスが帰る
  5. ブラウザから VPSのip:3000 と接続するとタイムアウトする
  6. 同時に立てている nginx のサーバ(80番)にはブラウザ接続できる

NodeJS index.jsの定義

var express = require('express'); var app = express(); var server = app.listen(3000, function(){ console.log("Node.js is listening to PORT:" + server.address().port); }); var photoList = [ { id: "001", name: "photo001.jpg", type: "jpg", dataUrl: "http://localhost:3000/data/photo001.jpg" },{ id: "002", name: "photo002.jpg", type: "jpg", dataUrl: "http://localhost:3000/data/photo002.jpg" } ] app.get("/", function(req, res, next){ res.json(photoList); });

firewall-cmd --list-allの定義

public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ssh ports: 3000/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:

Docker のプロセス一覧

IMAGE COMMAND CREATED STATUS PORTS NAMES node "node index.js" 14 seconds ago Up 14 seconds 0.0.0.0:3000->3000/tcp docker_node_run_13 nginx:latest "nginx -g 'daemon off" 54 minutes ago Up 54 minutes 0.0.0.0:80->80/tcp, 443/tcp docker_proxy_1 nginx:latest "nginx -g 'daemon off" 9 days ago Up 55 minutes 80/tcp, 443/tcp docker_nginx_1 redis:3 "docker-entrypoint.sh" 9 days ago Up 55 minutes 6379/tcp noderedis

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

szk.

2017/04/27 07:11

差し支えなければVPSはどこを使われていますか? またVPS側でポートを弾いているような設定はありませんか?
kanimaru

2017/04/27 07:16 編集

szkさん 盲点でした。conohaの場合管理画面で設定必須でした・・・。ありがとうございます! すみません、szk.さんよろしければ回答にVPSの設定では?といただけますでしょうか!
guest

回答2

0

firewalldで3000番が空いてないのではないでしょうか。

sudo firewall-cmd --list-all

投稿2017/04/27 06:13

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanimaru

2017/04/27 06:24

kunai さん ご回答ありがとうございます。 firewall-cmd --zone=public --add-port=3000/tcp --permanent で開放したつもりだったんですが、上記がまちがっていますでしょうか・・。
kunai

2017/04/27 06:51

あっていると思いますが、念のため見てみるだけ見てみてもよいのでは
kanimaru

2017/04/27 07:08 編集

kunai さん 以下のようにおこなってみましたが、繋がりませんでした。 正直、何が原因なのかさっぱりです・・・。 firewall-cmd --permanent --zone=public --add-port=3000/tcp Warning: ALREADY_ENABLED: 3000:tcp // 既に設定してあるエラー success firewall-cmd --reload
kunai

2017/04/27 07:19

確かに問題ないですね。。 後は、ホスト側の172.・・・のネットワークと、ブラウザを起動している端末の所属するネットワークの172.・・・が別だという可能性あたりでしょうか。。
kanimaru

2017/04/27 07:33

kunaiさん  ご回答ありがとうございます!  szk.さんから追記依頼いただきましたが、契約しているVPSの設定で開放していませんでした・・・。  kunaiさんも色々ありがとうございました!
guest

0

ベストアンサー

#出来レースですいませんが、、;

VPS側の設定ではないでしょうか。
vps ポート解放で検索してみると、ハマった話が出てきます。

投稿2017/04/27 07:46

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanimaru

2017/04/27 07:50

szk.さん  ありがとうございます!ご指摘の通りでした。 共感できるはまった話が見つかりました(笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問