ローカルでは動いたのに、グローバル環境になるとブラウザからログインできないdockerの謎

今回ローカルで動かしていたdockerをec2インスタンスに移して、ブラウザから見ようとするとアクセスが拒否されていました。

半日くらい悩んだ末、問題を解決することができました。

どこが悪いのか調べてみる。

セキュリティグループを見てみる。

まずあたりをつけてみます。

ec2あるあるのセキュリティグループの設定を確認。

ec2インスタンスに付随するセキュリティグループを確認しましょう。

セキュリティグループ

80番は空いているのね。

ということで問題は無さそう。

pingは通るのか

一旦pingが通るか確認してみます。

EC2インスタンスにpingコマンドを使うには特定のポートを開けないといけません。

なので以下の記事を参考にポートを開けます。

Ping/ICMP のルール
[https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping]

ということでポートを開けて、コマンドプロンプトから確認してみます。

ping {サーバのpublic IP}

うん、通っている…

何が問題なんだー!

サーバの設定系では無さそうだなということでdockerを確認してみる。

docker-compose.yamlを確認

結局docker-compos.yamlファイルに原因があった!
以下が書いていた内容。

version: "3.8"

services:
  php:
    container_name: {container_name}
    build: ./docker/php
    tty: true
    networks:
      ???_net:
        aliases:
          - php
        ipv4_address: 172.31.0.2
    ports:
            - 127.0.0.1:80:80
    volumes:
      - ./src:/var/www

Code language: JavaScript (javascript)

portsのところで、ローカルしかみませんよーっていう設定をしていたようだ…

なので以下のように内容を修正。

これで80番からの通信ができる!

ports:
    - 80:80
Code language: CSS (css)

まとめ

分かっているのよ。

自分が書く内容は理解しないとって。。。。

それが肝心だと感じた凡ミスでした!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA