Apache 使用自定义域名访问docker容器化应用程序

Apache 使用自定义域名访问docker容器化应用程序,apache,docker,docker-compose,dockerfile,appdomain,Apache,Docker,Docker Compose,Dockerfile,Appdomain,我正在尝试为我在docker上运行的应用程序在本地设置一个自定义域名,因此,与其使用从浏览器访问我的应用程序,不如使用 这是我的/etc/hosts文件 127.0.0.1 localhost 127.0.0.1 myapp.dev 在我的Dockerfile中,我有一个vhost文件 复制docker/vhost.conf/etc/apache2/sites available/000 default.conf 将配置从本地复制到apache配置中 <Virtu

我正在尝试为我在docker上运行的应用程序在本地设置一个自定义域名,因此,与其使用从浏览器访问我的应用程序,不如使用

这是我的/etc/hosts文件

127.0.0.1       localhost
127.0.0.1       myapp.dev
在我的Dockerfile中,我有一个vhost文件
复制docker/vhost.conf/etc/apache2/sites available/000 default.conf
将配置从本地复制到apache配置中

<VirtualHost *:80>

    ServerName myapp.dev
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/public

    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined

</VirtualHost>

ServerName myapp.dev
服务器管理员webmaster@localhost
DocumentRoot/var/www/html/public
ErrorLog/var/log/apache2/error.log
CustomLog/var/log/apache2/access.log组合
但是当我尝试使用本地域名访问应用程序时,会收到一条消息,从浏览器上显示“无法连接”


我做错什么了吗?

vhost.conf
复制到docker映像中会影响容器内的apache服务器端口。而不是如何从物理机器访问它

vhost.conf不应与主机名绑定
ServerName myapp.dev
,因为容器中的主机名将不同

更改
ServerName
以接受来自
127.0.0.1
*

应进行主机到容器端口映射,以便从浏览器访问应用程序

docker run --name <container-name> -p 80:80 -d <image-name>
例如,不使用docker compose。但一旦容器处于运行状态,就可以按照所述验证端口绑定

使用
docker容器ls的输出验证端口绑定是否成功

$ docker run --name mynginx1 -p 80:80 -d nginx
ba2565a8e7e4a3e5909cb055603eb5161dd50e6f17019b2a9f11ba9b2b4888e4
$ docker container ls | grep mynginx1
ba2565a8e7e4        nginx               "nginx -g 'daemon of…"   12 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp    mynginx1

接下来,使用所需的DNS名称更新/etc/hosts文件。

您使用哪些命令启动容器?您应该使用
http://myapp.dev:8080
访问容器(您忘记了示例中的8080端口)。这只是一个输入错误,或者你真的错过了它?在尝试访问url
http://myapp.dev:8080
使用端口我得到以下信息:安全连接失败,重定向到https://Change ServerName接受来自127.0.0.1的请求。这就是我在vhost.conf中所要做的一切,还需要编辑/etc/hosts文件。
$ docker run --name mynginx1 -p 80:80 -d nginx
ba2565a8e7e4a3e5909cb055603eb5161dd50e6f17019b2a9f11ba9b2b4888e4
$ docker container ls | grep mynginx1
ba2565a8e7e4        nginx               "nginx -g 'daemon of…"   12 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp    mynginx1