我正在为多个网站创建Docker环境。我已决定为每个域分开具有多个容器的docker-compose.yml
文件。目前,我有这样的事情:为多个Docker容器使用域而不是端口
web:
image: nginx:latest
volumes:
- /c/Users/marcin/dock-test/html/test-laravel-project-2/:/usr/share/nginx/html/test-laravel-project-2/
- /c/Users/marcin/dock-test/nginx-conf/conf.d2/:/etc/nginx/conf.d
- /c/Users/marcin/dock-test/nginx-log/:/var/log/nginx
ports:
- "8088:80"
working_dir: /usr/share/nginx/html/test-laravel-project-2/
links:
- php
- db
container_name: lara.web
environment:
- VIRTUAL_HOST='l2.app'
- VIRTUAL_NETWORK='nginx-proxy'
expose:
- 8088
php:
build: ../dockerfiles/
dockerfile: Dockerfile-php7-fpm
volumes:
- /c/Users/marcin/dock-test/html/test-laravel-project-2/:/usr/share/nginx/html/test-laravel-project-2/
- /c/Users/marcin/dock-test/php-config/:/usr/local/etc/php/
working_dir: /usr/share/nginx/html/
links:
- db
container_name: lara.php
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
expose:
- 3306
volumes:
- /c/Users/marcin/dock-test/mysql2/:/var/lib/mysql/
- /c/Users/marcin/dock-test/mysql-log2/:/var/log/mysql/
ports:
- "33062:3306"
container_name: lara.db
这是工作正常,但我想用这个域名,因为此刻我需要使用8088端口,像这样:http://192.168.99.100:8088
。很明显,我可以在上面的配置中使用80:80
映射,但我们假设我想使用8088端口(因为对于多个站点,我将需要为每个网站使用不同的端口)。
现在的问题 - 我如何使用域名而不是IP与端口?我已经添加到我的Windows(我使用Windows作为操作系统)l2.app
映射到192.168.99.100
,但我仍然需要像这样使用它:http://l2.app:8088
。
我也试着nginx-proxy
这样的:
docker pull jwilder/nginx-proxy
docker-compose up -d
docker run -d -p 80:8088 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
但是当我尝试使用http://l2.app
我越来越503
,显然,当我使用http://l2.app:8088
一切正常访问网站。
我假设我可能错误配置了端口映射nginx-proxy
,但不知道映射在哪个位置不正确。你能给我这个建议吗?
我想你需要首先启动'nginx-proxy'容器,然后'docker-compose up'。另外''nginx-proxy'的端口映射应该是80:80。虽然我认为Windows上的这个设置可能会有进一步的问题,因为Docker在Windows上的虚拟机内部运行,所以现在您将'l2.app'指向192.168.99.100,但'nginx-proxy'指向'l2.app '到虚拟机内容器的内部IP地址。我没有测试过,但我认为它可能无法正常工作。 –
@warmoverflow我几乎可以肯定,我也在努力,因为你写了,但我会尽快再试一次,我将我的PC周围 –
@warmoverflow我已经做到了 - 没有成功。我也尝试将'expose'改为'80',但它也完全没有帮助 –