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 关注
- 94 浏览
添加回答
举报