[英]Port available to set in docker-compose.yml for mysql and wordpress
我有一個應用程序,我可以在其中創建幾個 wordpress 項目,每個項目都有一個 docker-compose.yml 文件來啟動本地 wordpress 環境。
我設置:
mysql:端口:- 8081:3306
wordpress 端口:- 8080:80
我希望每個項目都有一個獨特的端口配置,以允許在我需要時啟動所有項目,或者不使用已使用的端口並返回錯誤。
那么,mysql 和 wordpress 可以使用哪些端口范圍?
你知道這是可能的還是一個壞主意?
謝謝
完全有可能。 訣竅是只指定容器內部的端口,然后,當 docker-compose 啟動時。 它會自動將主機端口映射分配給內部容器端口。
例如,如果您像這樣定義 docker-compose.yaml :
version: '3'
services:
mysql:
image: mysql
ports:
- 3306
environment:
- MYSQL_ROOT_PASSWORD=badpassworddontdothis
wordpress:
image: wordpress
ports:
- 80
並運行docker-compose up
,我們可以查看分配的端口映射:
❯ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------
67077886_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:55362->3306/tcp, 33060/tcp
67077886_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:55361->80/tcp
這表明您可以在主機端口 55362 上訪問 mysql 容器,在端口 55361 上訪問 wordpress。
如果您需要以編程方式獲取給定服務的公開端口,您可以運行:
❯ docker-compose port wordpress 80
0.0.0.0:55361
並且您將取回允許您與 wordpress 容器端口 80 通信的 ip/端口對:
❯ curl -v $(docker-compose port wordpress 80)
* Trying 0.0.0.0...
* TCP_NODELAY set
* Connected to 0.0.0.0 (127.0.0.1) port 55361 (#0)
> GET / HTTP/1.1
> Host: 0.0.0.0:55361
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Tue, 13 Apr 2021 20:09:03 GMT
< Server: Apache/2.4.38 (Debian)
< X-Powered-By: PHP/7.4.16
< Location: http://0.0.0.0:55361/wp-admin/setup-config.php
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
<
* Connection #0 to host 0.0.0.0 left intact
* Closing connection 0
(302是因為我實際上並沒有設置wordpress,但它仍然是來自服務器的響應,所以它很重要)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.