我正在使用這個 docker-compose 檔案:
version: "3.7"
services:
mautrix-wsproxy:
container_name: mautrix-wsproxy
image: dock.mau.dev/mautrix/wsproxy
restart: unless-stopped
ports:
- 29331
environment:
#LISTEN_ADDRESS: ":29331"
APPSERVICE_ID: imessage
AS_TOKEN: put your as_token here
HS_TOKEN: put your hs_token here
# These URLs will work as-is with docker networking
SYNC_PROXY_URL: http://mautrix-syncproxy:29332
SYNC_PROXY_WSPROXY_URL: http://mautrix-wsproxy:29331
SYNC_PROXY_SHARED_SECRET: ...
mautrix-syncproxy:
container_name: mautrix-syncproxy
image: dock.mau.dev/mautrix/syncproxy
restart: unless-stopped
environment:
#LISTEN_ADDRESS: ":29332"
DATABASE_URL: postgres://user:pass@host/mautrixsyncproxy
HOMESERVER_URL: http://localhost:8008
SHARED_SECRET: ...
但隨后docker ps顯示
... dock.mau.dev/mautrix/wsproxy ... 0.0.0.0:49156->29331/tcp, :::49156->29331/tcp
我必須使用外部埠 49156 連接到其內部埠 29331。
這個 49156 到底是從哪里來的?我如何映射它所以它是 29331->29331 ?
docker inspect 顯示:
"NetworkSettings": {
"Bridge": "",
"SandboxID": ...,
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"29331/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49156"
},
{
"HostIp": "::",
"HostPort": "49156"
}
]
},
uj5u.com熱心網友回復:
除了提供的答案之外,如果您想要一個修復埠映射,您可以通過提供 2 個埠來實作這一點,這些埠由帶有發布標志的冒號分隔,或者在使用 compose 時在埠陣列中。左邊部分是主機系統上可用的映射埠,右邊部分是容器內的埠。
# make port 29331 inside the container available on port 8080 on the host system
docker run --publish 8080:29331 busybox
在你的情況下,回答你的問題。
我如何映射它所以它是 29331->29331 ?
services:
mautrix-wsproxy:
ports:
- "29331:29331"
...
uj5u.com熱心網友回復:
從檔案中ports:
有三個選項:
- 指定兩個埠 (HOST:CONTAINER)
- 僅指定容器埠(為主機埠選擇一個臨時主機埠)。
- ……
您正在使用第二個選項,并且只指定要公開的容器埠。由于您沒有指定將其映射到的主機埠,因此“選擇了臨時主機埠”。
uj5u.com熱心網友回復:
查看撰寫檔案 ( )中的檔案,portsdocs.docker.com我們可以閱讀以下內容:
短句法
有三個選項:
...
- 僅指定容器埠(為主機埠選擇一個臨時主機埠)。
...
這實質上意味著選擇了一個隨機的、空閑的主機埠。
為了將容器埠顯式映射到已知主機埠(即使它與容器埠相同),我們使用以下HOST:CONTAINER語法(參見上面的鏈接):
version: "3.7"
services:
mautrix-wsproxy:
...
ports:
- "29331:29331"
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/407324.html
標籤:
上一篇:啟動目錄下的docker檔案
