3 回答

TA貢獻1841條經驗 獲得超3個贊
您有多種選擇:
選項 1:定義自己的 postgresql.conf
url_db:
build:
context: ./api/services/url/db
dockerfile: Dockerfile
container_name: "url_db"
command: postgres -c "config_file=/etc/postgresql/postgresql.conf"
environment:
POSTGRES_USER: gorm
POSTGRES_PASSWORD: gorm
POSTGRES_DB: gorm
POSTGRES_HOST: url_db
ports:
- 5433:5433
volumes:
- /path/to/config:/etc/postgresql/postgresql.conf
/usr/share/postgresql/postgresql.conf.samplePostgres在容器中有一個示例配置。
要運行配置:
docker run -i --rm postgres cat /usr/share/postgresql/postgresql.conf.sample > my-postgres.conf
選項 1:覆蓋 RUN 命令
url_db:
build:
context: ./api/services/url/db
dockerfile: Dockerfile
container_name: "url_db"
command: postgres -c port=5433
environment:
POSTGRES_USER: gorm
POSTGRES_PASSWORD: gorm
POSTGRES_DB: gorm
POSTGRES_HOST: url_db
ports:
- 5433:5433

TA貢獻1847條經驗 獲得超11個贊
您可以擁有多個在內部偵聽同一端口的容器,只要它們映射到主機上的不同端口(如果它們已發布)。在您的示例中,您可以設置
url_db:
image: postgres:latest
environment:
POSTGRES_USER: gorm
et: cetera
ports:
- 5433:5432
來自 Docker 外部的連接到達重新映射的端口,位于<host ip>:5433. Docker 容器之間的連接使用標準服務端口,在url_db:5432. 這些連接忽略(并且不需要)ports:。
現代 Docker 中的“暴露”幾乎沒有任何意義。它作為圖像中的文檔最有價值,該圖像顯示了服務通常使用的端口。理論上,您可以在expose:不修改映像的情況下向 Compose 請求其他端口,但這樣做并沒有實際效果。

TA貢獻1833條經驗 獲得超4個贊
對于 Docker Compose,假設我們要將端口更改為 5433
這樣做的另一種方法是在 docker-compose.yml 文件中執行以下操作
在這種情況下,您可以將 postgres 數據掛載到目錄中的卷中 ./db
postgres:
image: postgres:10.14-alpine
environment:
POSTGRES_DB: iam
ports:
- 5433:5433
volumes:
- ./db:/var/lib/postgresql/data
找到 postgresql.conf 文件,然后搜索port
將端口更改為
port = 5433 # (change requires restart)
- 3 回答
- 0 關注
- 116 瀏覽
添加回答
舉報