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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

Q&A

解決済

1回答

4606閲覧

localhostではなく別の名前で接続したい

amesta122

総合スコア2

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

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

0グッド

1クリップ

投稿2022/03/03 04:58

Dockerとapacheを使ってWebサーバーを立てています。
無事 http://localhost と打てばLaravelの画面を見れるようになったのですが、
これを http://localhost ではなく http://hoge.test と打ってアクセスできるようにしたいです。

調べたところ、extra_hosts を利用すれば hoge.testを割り当てられそうと考え、
下記のようにdockerファイルを編集しました。

$ docker-compose exec app bash から etc/hosts を覗くと確かに 127.0.0.1 にhoge.testがありますが、
http://hoge.test/ にアクセスすると DNS_PROBE_FINISHED_NXDOMAIN を返されてしまいます。
hoge.test のIPを127.0.0.2などに変更すると ERR_CONNECTION_TIMED_OUT となってしまいます。

コンテナ上ではなく、OS側のターミナルから etc/hostsを編集すると反映はされますが、
他のWebサーバとのDNSを分けたいため困っております。

そもそもdockerでローカルの接続先を変える時は、extra_hosts を追記するというアプローチでいいのでしょうか。
よろしくお願いいたします。


docker-compose.yml

docker

1version: '3' 2services: 3 app: 4 build: ./docker 5 extra_hosts: 6 - "hoge.test:127.0.0.1" 7 ports: 8 - 80:80 9 volumes: 10 - ./app:/var/www/app 11 working_dir: /var/www/app

Dockerfile

1FROM php:8.0-apache 2COPY --from=composer:latest /usr/bin/composer /usr/bin/composer 3RUN apt-get update && apt-get install -y git \ 4 && docker-php-ext-install pdo_mysql \ 5 # 追加分 6 && apt-get install -y vim \ 7 && apt-get install -y iputils-ping net-tools 8 9RUN sed -i 's!/var/www/html!/var/www/app/public!g' /etc/apache2/sites-available/000-default.conf

バージョン
Docker version 20.10.12, build e91ed57
MacOS Monterey 12.1 Apple M1 Pro

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

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

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

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

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

guest

回答1

0

ベストアンサー

extra_hostsに追加してもあくまで、Dockerネットワーク内の名前解決に使われるだけです。

そもそもlocalhostというのは自分のPCにアクセスしているだけなので、
hoge.testにアクセスした際の名前解決を自分のWiFiネットワーク上、もしくは自分のPC上で解決すれば可能です。

投稿2022/03/03 05:06

編集2022/03/03 05:07
sk-sora--ypi

総合スコア535

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

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

amesta122

2022/03/03 08:45

ご回答ありがとうございます。 結局mac側での解決を弄ることになりそうですね。 https://docs.docker.jp/docker-for-mac/networking.html#ip 最後に一点、networks.ネットワーク名.ipv4_address でipを割り振ろうとしていたらこの記事を見つけたのですが、つまりMac側では基本的に 127.0.01 でしかdockerへアクセスできないと考えていいのでしょうか。
sk-sora--ypi

2022/03/03 14:55

> コンテナごとに IP アドレスを割り当てられません > docker (Linux) ブリッジ・ネットワークは macOS ホストから到達できません。 ここの話でしょうか? これはDockerネットワーク上からホストOSへの到達はできないという話なので違う気がします。 ちなみに、ポート解放さえしていればWiFi内からもアクセスはできるので、 正確に言えば端末に振られているIPアドレスか、自分のPC内からであればlocalhostあるいは127.0.0.1からアクセスすることが可能です。
amesta122

2022/03/06 10:03

>> docker (Linux) ブリッジ・ネットワークは macOS ホストから到達できません。 > ここの話でしょうか? はい。macからDockerへ行けれない趣旨だと勘違いしていました。 Apacheのバーチャルホストを使用してプロジェクトごとにDocumentRootとServerNameを変えて、 macのetc/hosts と連動させる方向で考えていたことができました。 おっしゃる通り、設定した項目の名前解決を紐づければ良いと気づきました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問