這是我的 docker-compose-proxy.yml
version: "3.7"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
- static_data:/vol/web
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=supersecretpassword
- ALLOWED_HOSTS=127.0.0.1
depends_on:
- db
proxy:
image : proxy:latest
depends_on:
- app
ports:
- "8000:8000"
volumes:
- static_data:/vol/static_data
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
volumes:
static_data:
我在運行命令之前檢查了埠
netstat -ltnp | grep ':8000'
并且埠沒有被占用。當我去
docker-compose -f docker-compose-proxy.yml up
我有錯誤
ERROR: for 9bac48e03668_recipe-app-api-devops_proxy_1 Cannot start service proxy: driver failed programming external connectivity on endpoint recipe-app-api-devops_proxy_1 (af5860c135cb37026dcac6ce27151cd4e8448eaddc542d50dcd009c0e24c09fa): Bind for 0.0.0.0:8000 failed: port is already allocated
為什么?如何解決這個問題?
uj5u.com熱心網友回復:
您指定的埠8000位于
ports:
- "8000:8000"
由于此埠已用于某事,因此您會收到已分配的錯誤。因此,您需要找出正在使用埠8000的內容,然后更改容器的埠、停止其他行程或更改其他行程的埠。
uj5u.com熱心網友回復:
您正在嘗試將主機埠 8000 系結到兩個不同的東西:
services:
app:
ports:
- "8000:8000"
proxy:
ports:
- "8000:8000"
所以這告訴 Compose 嘗試將主機埠 8000 路由到app容器,并將主機埠 8000 路由到proxy容器,但它不能兩者都做。這基本上就是你得到的錯誤。
如果您希望對系統的所有請求都通過proxy容器,您可以ports:從容器中洗掉塊app。它仍然可以從同一個 Compose 檔案中的其他容器中看到,http://app:8000但不能從 Docker 外部訪問。
如果您需要兩個容器都可以訪問,則需要更改ports:其中一個或另一個容器上的第一個數字,而不是第二個數字。
ports:
- '8001:8000' # host port 8001 -> container port 8000
這根本不會影響容器之間的連接;無論ports:存在或不存在什么,他們將始終使用他們嘗試連接的容器的“標準”埠號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/455313.html
上一篇:可以用來讓docker-compose無限期運行的最小影像是什么?
下一篇:同一應用程式的不同實體的集成測驗
