如何将虚拟主机映射到docker中的容器?
我正在尝试使用Docker安装LEMP本地开发环境。以下是我的码头 - composer.yml:如何将虚拟主机映射到docker中的容器?
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://foo.dev而不是使用http://localhost来访问该项目,但对于我的生活,我无法弄清楚我如何实现这一目标?我看到的一个例子是this,但它使用了不同的图像,它也使用nginx。
我假设foo/apache-php7映像是从基于Ubuntu 16.04的nimmis/apache-php7分支的,所以默认情况下,您的Apache将以同样的方式应答HTTP请求,而与主机名无关。 因此,您唯一需要做的就是在foo.dev DNS区域中设置指向您服务器的A/AAAA记录。
它看起来像区需要一些注意在任何情况下:
% host foo.dev
foo.dev has address 127.0.53.53
foo.dev mail is handled by 10 your-dns-needs-immediate-attention.dev.
地址记录指向本地主机地址,这将无法正常工作,直到你在同一主机上实际上是。你需要一个全球路由的IP地址。
是的,它是从nimmis/apache-php7图像分叉的。我有点困惑,为什么我需要设置A/AAAA记录来为我的电脑设置开发环境。什么我目前做的一个例子是: 1.运行一个流浪汉框 2.设置一个IP地址(如192.168.2.19) 3.在我的/ etc/hosts中添加以下内容: 192.168.2.19 FOO。 dev 现在,当我导航到foo.dev时,它将运行本地虚拟框实例。但是对于Docker,我似乎无法弄清楚。除非我完全错过了它,因为我对Docker没有任何兴趣,我的答案没有帮助吗? –
当你尝试访问http://foo.dev/时,你会得到什么? –
我所需要做的只是在相关站点的apache conf文件中添加ServerName指令。在我的情况下,它是000-default.conf。我甚至没有需要更新hosts文件,因为我打标歌德的回答为答案因为这是针对我这样的:
ServerName foo.dev
然后我更新了我的hosts文件有以下:
127.0.0.1 foo.dev www.foo.dev
你到目前为止尝试过什么? – johnharris85
@ johnharris85这可能听起来很懒惰,但我甚至不知道从哪里开始。试过官方文档,谷歌,但我想我没有问正确的问题,所以不知道在哪里看。 –