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

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

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

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Docker

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

Q&A

解決済

1回答

1702閲覧

DockerでのWebアプリケーションのポートフォワードについて

harada_yoshiaki

総合スコア11

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Docker

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

0グッド

0クリップ

投稿2019/04/26 06:02

前提・実現したいこと

自作したWebアプリケーションをDockerコンテナで起動し外部から接続したいです.
KotlinのKtorを使用しました.
jarを作成してDockerコンテナ内で起動させました.

発生している問題・エラーメッセージ

localの8000番をコンテナの8000番に接続しています.
Docker内で起動はしているのですが,ポートフォワードがうまくいきません.

32103b2b3eca log-api "java -jar log-api-1…" 16 minutes ago Up 16 minutes 0.0.0.0:8000->8000/tcp log-api

curlコマンドの実行

username$ curl localhost:8000/ curl: (52) Empty reply from server

該当のソースコード

FROM openjdk:12-jdk-oracle Expose 8000 RUN mkdir ./work COPY . /work WORKDIR /work ENTRYPOINT ["java","-jar","log-api-1.0-SNAPSHOT.jar"]

試したこと

dockerコンテナ内での実行はうまく行きます.

$ docker exec -it 32103b2b3eca /bin/bash bash-4.2# curl localhost:8000/ hello

nginxはうまく行きました

$ docker run --name example -d -p 8080:80 nginx 744d52dee78d35900237433b760ed7c8d56e32e4eb9f6063c406884a3f7c83cb $ curl localhost:8080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

補足情報(FW/ツールのバージョンなど)

docker-for-macを使用しています

Docker version 18.09.2, build 6247962

Ktorのapplicaton.cong

ktor { deployment { host = "127.0.0.1" port = 9000 port = ${?PORT} } application { modules = [ rest.CalendarAppKt.module ] } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

application.cong の中で host = "127.0.0.1" とありますので、ローカルホスト(Docker を使っている場合は、コンテナの名前空間の中)からしかアクセスできない状態です。そのため docker exec を使うと、127.0.0.1 からのアクセスのため、表示できています。

host = "0.0.0.0" と変更されてみてはかがでしょうか。

投稿2019/04/26 06:39

zembutsu

総合スコア1584

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

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

harada_yoshiaki

2019/04/26 08:06

できました!ありがとうございます.コンテナの名前空間の中からアクセスできないのを理解してませんでした.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問