我正在尝试使用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,但对于我的生活,我无法弄清楚我是如何实现这一目标的?我见过的一个例子是this,但它使用的是另一个图像,它也使用了nginx。
答案 0 :(得分:2)
我假设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地址。
答案 1 :(得分:0)
我只需要在apache conf文件中为相关网站添加ServerName指令。在我的例子中,它是000-default.conf。我甚至不需要更新主机文件,因为我将Gerd的答案标记为答案,因为这就是我的指示:
ServerName foo.dev
然后我使用以下内容更新了我的hosts文件:
127.0.0.1 foo.dev www.foo.dev