【发布时间】:2019-08-22 03:01:49
【问题描述】:
我问了一个问题here 并解决了我的部分问题,但我被建议创建另一个问题,因为它在 cmets 中开始变得有点冗长。
我正在尝试使用 docker 在我的 Mac 上运行多个基于 PHP、MySQL 和 Apache 的应用程序,所有这些应用程序都将使用不同的 docker-compose.yml 文件(我链接的帖子中有更多详细信息)。我有很多存储库,其中一些相互通信,但并非所有存储库都是相同的 PHP 版本。因此,我认为将 20 多个独立的存储库塞进一个 docker-compose.yml 文件对我来说是不明智的。我希望每个存储库都有单独的 docker-compose.yml 文件,并且我希望能够为每个应用程序使用 /etc/hosts 条目,这样我就不必指定端口。例如:我将访问 2 个不同的存储库,例如 http://dockertest.com 和 http://dockertest2.com(使用 /etc/hosts 条目),而不必指定像 http://dockertest.com:8080 和 http://dockertest.com:8081 这样的端口。
使用我另一篇文章中接受的答案,我能够一次运行一个应用程序(一个 docker-compose.yml 文件),但如果我尝试使用 docker-compose up -d 启动另一个应用程序,则会导致错误,因为端口80已经被占用了。如何同时运行多个 docker 应用程序,每个应用程序都有自己的 docker-compose.yml 文件,而无需在 url 中指定端口?
这是我制作的应用程序的 docker-compose.yml 文件。在我的/etc/hosts 我有127.0.0.1 dockertest.com
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:
【问题讨论】: