【发布时间】:2019-03-30 21:57:34
【问题描述】:
在我的 Mac 上,我使用运行 Ubuntu 和 apache 的 vagrant,并为我的各种 apache 代码存储库提供虚拟主机条目。在 OSX 方面,我为每个 v-host 条目创建 /etc/hosts 条目。
我正在尝试使用 docker 达到相同的效果,但我很难在访问应用程序时不必指定端口号的情况下解决这个问题,我不想这样做。例如:我的 /etc/hosts 中有 127.0.0.1 dockertest.com,然后我可以通过 http://dockertest.com:8080 访问它。我希望能够在不指定端口的情况下直接转到http://dockertest.com。我怎样才能做到这一点?我知道端口号不能在 /etc/hosts 文件中使用,所以我正在寻找一种可以模拟效果的方法。我需要能够同时运行多个 docker 应用程序,因为一些代码库相互通信并且每个代码库都需要有自己唯一的主机名,所以我不认为在 docker- 中简单地将端口设置为 80:80 compose 文件将起作用,因为每个应用程序都将(尝试)在 127.0.0.1:80 上运行。
对于上下文,我遵循this tutorial 在 docker 上运行 apache、php 和 mysql。我的所有文件都与该站点上显示的完全相同。
更新
以下docker-compose.yml 文件出现502 Bad Gateway nginx 错误。
version: "3.3"
services:
php:
build: './php/'
networks:
- backend
volumes:
- ./public_html/:/var/www/html/
apache:
build: './apache/'
depends_on:
- php
- mysql
networks:
- frontend
- backend
volumes:
- ./public_html/:/var/www/html/
environment:
- VIRTUAL_PORT=3000
- VIRTUAL_HOST=dockertest.com
mysql:
image: mysql:5.6.40
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
frontend:
backend:
更新 2
解决了“502 Bad Gateway”错误,这是更新后的docker-compose.yml 文件。我必须将 nginx-proxy 添加到我引用的网络之一。我的问题还没有完全解决,但我确实有一部分工作。对于阅读本文并寻找解决方案的任何人,我创建了另一个问题 here 以防止这个问题变得太长。
version: "3.3"
services:
php:
build: './php/'
networks:
- backend
volumes:
- ./public_html/:/var/www/html/
apache:
build: './apache/'
depends_on:
- php
- mysql
networks:
- frontend
- backend
volumes:
- ./public_html/:/var/www/html/
environment:
- VIRTUAL_HOST=dockertest.com
mysql:
image: mysql:5.6.40
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
nginx-proxy:
image: jwilder/nginx-proxy
networks:
- backend
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
frontend:
backend:
【问题讨论】:
标签: apache docker containers