いくつかのコンテナは、本番環境でWebサーバ(PHP、NodeJS)を実行しています。我々はNodeJSコンテナの例を取る場合ホストマシンでDockerコンテナにアクセスできない
が、これは私はを通じて自分のWebアプリケーションにアクセスすることができるよ、この構成では、その構成
ドッキングウィンドウ-compose.yml
version: '2'
services:
webapp:
build: .
volumes_from:
- data
links:
- db:db
- redis:redis
ports:
- '8080:3000'
restart: always
...
ですhttp://example.com:8080/
が、私はNを持って
$ curl localhost:8080
(Time-out)
と私のホストマシン上でアクセスすることはできませんこの構成では、私のホスト上の会社はGinxサーバー:
example.com.conf
upstream webapp {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
server_name example.com;
location/{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
proxy_pass http://webapp;
}
}
しかしhttp://example.com/
に加盟は504ゲートウェイタイムアウトを投げます。
私はまだここに私docker-compose.yml
'127.0.0.1:8080:3000'
によって問題でポート設定を変更しようとしたがhttp://example.com
にアクセスすることはできません(とhttp://example.com:8080
が、それは私が望む結果である)場合。
これは非常に奇妙で、私は新鮮なサーバで私のアプリケーションを動かすことに問題はありません。 私はこの問題の根本を探しています。
ご協力いただきありがとうございます。
EDIT:
$ netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:59712 0.0.0.0:* LISTEN -
udp 0 0 127.0.0.11:33293 0.0.0.0:* -
Webサーバーがポート3000でリッスンする必要がありますが、私は、サーバーも実行されている
$ docker-compose logs
webapp_1 | Express server listening on port 3000 in production mode
...
$ docker port webapp_1
3000/tcp -> 127.0.0.1:8080
これは 'curl http://example.com:8080 /'ではないはずですか? – stacksonstacks
Docker Machineを使用していますか? –
@stacksonstacks:私のコンテナは、Nginxを使ってパブリックドメイン上でのみローカルとリダイレクトでアクセスできるようにしたい。 –