我正在爲多個網站創建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',但它也完全沒有幫助 –