【发布时间】:2019-08-07 21:21:25
【问题描述】:
我已经在单独的容器中成功设置了 Docker、Apache2、PHP。我可以通过http://localhost:8080访问我的网站。
我遇到的问题与 /etc/hosts 文件有关(我认为)。先看一下我的docker-compose文件:
apache2:
build:
context: ./apache2/
dockerfile: Dockerfile
container_name: apache2
image: httpd:2.4.39-alpine
ports:
- 8080:80
volumes:
- ../:/srv/app
extra_hosts:
- "custom-website-name.local:127.0.0.1"
如您所见,我确实在其中添加了额外的主机,它甚至出现在容器的 /etc/hosts 文件中。但是,无论我做什么以及我做了什么更改(在 LIVE 容器和配置中手动),我都无法强制我的设置识别那个新主机。
我也有虚拟主机配置:
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so
<VirtualHost *:80>
ServerName www.custom-website-name.local
ServerAlias custom-website-name.local
# Proxy .php requests to port 9000 of the php-fpm container
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://webapp:9000/srv/app/public/$1
DocumentRoot /srv/app/public
<Directory /srv/app/public>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Send apache logs to stdout and stderr
CustomLog /proc/self/fd/1 common
ErrorLog /proc/self/fd/2
</VirtualHost>
复制到配置中。目前这一切似乎还不够,我只能通过http://localhost:8080 访问我的网站,而http://custom-website-name.local:8080 给了我This site can’t be reached,这意味着新名称未解析。
问题当然是:我错过了什么?我不知道我还能尝试什么(我确实尝试了很多东西)。
编辑:
我确实也向本地(非 docker)/etc/hosts 添加了一个条目 - 没有帮助。
【问题讨论】:
-
尝试颠倒条目的顺序。它们在您的 /etc/hosts 文件中应如下所示: 127.0.0.1 custom-website-name.local
-
我知道你来自哪里。 Docker-compose 格式在这里确实有点奇怪,但我在
extra-hosts下的键似乎以相反的顺序添加到/etc/hosts中,所以 - 127.0.0.1 my.domain -
请参阅下面的评论:本地 /etc/hosts 文件。这肯定会有点混乱! :c)
-
您不应该将
/etc/hosts包含在一个卷中吗? -
@Robert 是的,它看起来更像是一个本地网络问题,或者它完全忽略 /etc/hosts 真的很奇怪。我犹豫是否建议您关闭并重新打开您的机器?
标签: php docker docker-compose apache2 hosts