dockerのWebサーバー(Apache)にiPhoneからHTTPSでアクセスする

環境

  • macOS Catalina バージョン10.15.7 (19H2)
  • Docker version 20.10.6, build 370c289
  • docker-compose version 1.29.1, build c34c88b2

ディレクトリ構成

./
  html/
    index.html
  docker.compose.yml

html/index.htmlファイルを作成する。

httpでアクセスできるように

docker-compose.ymlを以下のように編集する。

version: '3'

services:
  web:
    image: php:8.0-apache
    ports:
      - '80:80'
    volumes:
      - ./html:/var/www/html

コンテナを起動する。

$ docker-compose up -d

http:/localhost/にアクセスすると、html/index.htmlが表示される。

確認できたらコンテナを終了する。

$ docker-compose down

httpsでアクセスできるようにする

docker-compose.ymlを以下のように編集する。

version: '3'

services:
  web:
    image: php:8.0-apache
    # ports:
    #   - '80:80'
    volumes:
      - ./html:/var/www/html

  https-portal:
    image: steveltn/https-portal:1
    ports:
      - '443:443'
    links:
      - web
    restart: always
    environment:
      DOMAINS: 'localhost -> http://web:80'
      STAGE: 'local'

コンテナを起動する。

$ docker-compose up -d

https:/localhost/ にアクセスできることを確認する。
※ 関連:macOSのGoogle ChromeでNET::ERR_CERT_INVALIDが出たときの対処法

確認ができたらコンテナを終了する。

$ docker-compose down

https://local.test/ でアクセスできるようにする

docker-compose.ymlを以下のように編集する。

version: '3'

services:
  web:
    image: php:8.0-apache
    # ports:
    #   - '80:80'
    volumes:
      - ./html:/var/www/html

  https-portal:
    image: steveltn/https-portal:1
    ports:
      - '443:443'
    links:
      - web
    restart: always
    environment:
      # DOMAINS: 'localhost -> http://web:80'
      DOMAINS: 'local.test -> http://web:80'
      STAGE: 'local'

/etc/hostsファイルを編集し、以下の行を追加する。

127.0.0.1   local.test

コンテナを起動する。

$ docker-compose up -d

https://local.test/ にアクセスできることを確認する。

確認ができたらコンテナを終了する。

$ docker-compose down

iPhoneから https://local.test/ にアクセスできるようにする

macにDNSをインストールする。

$ brew install squid

DNSを起動する。

$ brew services start squid

iPhoneの設定アプリを起動し、「Wi-Fi」→「ⓘ」→「プロキシを構成」を選択する。

「手動」を選択して、「サーバー」にmacのIPアドレスを、「ポート」に「3128」を入力する。

iPhoneのsafariを起動し、https://local.test/にアクセスできることを確認する。

以上。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください