簡體   English   中英

端口可用於在 docker-compose.yml 中設置 mysql 和 wordpress

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM