如何将虚拟主机映射到docker中的容器?

我正在尝试使用Docker设置LEMP本地开发环境。 以下是我的docker-composer.yml:

version: '2' services: apache: build: context: ./docker/apache-php7 dockerfile: Dockerfile image: foo/apache-php7 volumes: - .:/var/www/html ports: - "80:80" - "443:443" networks: - localnet node: build: context: ./docker/node dockerfile: Dockerfile image: foo/node volumes: - .:/var/www/html networks: - localnet mysql: image: mysql:5.7 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_DATABASE: "root" MYSQL_USER: "root" MYSQL_PASSWORD: "root" volumes: - mysqldata:/var/lib/mysql networks: - localnet redis: image: redis:alpine volumes: - redisdata:/data networks: - localnet networks: localnet: driver: "bridge" volumes: mysqldata: driver: "local" redisdata: driver: "local" 

我可以通过访问http:// localhost访问该网站。 而不是使用http:// localhost访问该项目,我试图将其映射到http://foo.dev,但对于我的生活,我只是无法弄清楚我怎么能实现呢? 我看到的一个例子是这个,但它使用了一个不同的图像,它也使用nginx。

我假设foo / apache-php7映像是从基于Ubuntu 16.04的nimmis / apache-php7分支的,所以默认情况下,Apache不pipe主机名如何,都会以相同的方式应答HTTP请求。 因此,您唯一需要做的就是在foo.dev DNS区域中设置指向您的服务器的A / AAAAlogging。

在任何情况下,看起来这个区域都需要注意一下:

 % host foo.dev foo.dev has address 127.0.53.53 foo.dev mail is handled by 10 your-dns-needs-immediate-attention.dev. 

地址logging指向一个本地主机地址,除非你真的在同一个主机上,否则这个地址将不起作用。 你需要一个全球路由的IP地址。

我所需要做的仅仅是在相关网站的apache conf文件中添加ServerName指令。 在我的情况下,它是000-default.conf。 我甚至不需要更新主机文件,因为我将Gerd的答案标记为答案,因为这是我的指示:

 ServerName foo.dev 

然后我更新了我的主机文件,如下所示:

 127.0.0.1 foo.dev www.foo.dev