カスタムポート(8080)のDockerコンテナーでWebサービスを実行しました。ここでは、コンテナを実行して、関連するコンテナのポートを公開しようとしています( ここに表示 )が、役に立ちません。
docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
しかし、そのWebサービスエンドポイントに到達できないようです。
i)コンテナのポートを正しく公開していますか? ii)使用できないポートである場合、またはWebサービスが使用できない場合のトラブルシューティング方法呼び出される(コンテナにシェルインしてエンドポイントをカールできると便利です)。
私のDockerfileを見ることができます ここ 。そして、私はAdzerkの boot-clj ベースイメージを使用しています。
実際にdockerを実行し、毎回jarファイルの束を取得します。次に、 boot ブロック(wait
タスク)を実行します(これは、WebサーバーがWeb要求を処理するために必要です)。そして、これは私が迷子になっているところです。 Dockerでブートすると、私が要求したとおりにブロックします。しかし、ルートURI 返されるはずです という基本的なHello Worldメッセージを取得できないようです。
$ docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
Downloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar...
Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/
Retrieving pod-2.5.5.jar from https://clojars.org/repo/
Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/
Retrieving core-2.5.5.jar from https://clojars.org/repo/
...
Implicit target dir is deprecated, please use the target task instead.
Set BOOT_EMIT_TARGET=no to disable implicit target dir.
Chrome、curl、wgetはすべて、接続が拒否されたと言っています。
$ curl http://127.0.0.1:8080/
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
$ wget http://127.0.0.1:8080/
--2016-04-21 20:07:32-- http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... failed: Connection refused.
EXPOSE
ステートメントをポート8080のDockerfileに追加する必要があります。
Dockerからの参照は次のとおりです。 https://docs.docker.com/engine/reference/builder/#expose
最終的なDockerfileは次のようになります。
FROM adzerk/boot-clj
EXPOSE 8080
WORKDIR /app
COPY . /app
-pスイッチは、Dockerインスタンスにブリッジするホストに穴を開けます。-pHost_port:docker_instance_port
ここで、Dockerホストがどこにあるかを確認する必要があります。 VirtualBoxを使用している場合は、以下を実行してみてください。
docker-machine env
http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html