You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arch Linux下Docker无法映射端口访问宿主PostgreSQL的问题解决

在Arch Linux上Docker容器连接宿主机PostgreSQL 16的端口占用问题解决

问题背景

  • 系统环境:Arch Linux + PostgreSQL 16
  • 宿主机上的PostgreSQL可被DBeaver及本地应用正常访问
  • 执行Docker启动命令时遭遇端口占用错误:
    docker run -it -p 3000:3000 -p 5432:5432 joaofilippe/todo_go:0.1
    

错误信息

docker: Error response from daemon: driver failed programming external connectivity on endpoint wizardly_clarke (9993a1ecda871726d4a21a13fedc31b898d6264e4654324bd452fdb4de04b0ac): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use. ERRO[0000] error waiting for container: context canceled

已尝试的无效操作

  • 修改pg_hba.conf配置以允许Docker访问宿主机PostgreSQL
  • 通过Docker Compose运行PostgreSQL服务并映射5430端口,仍出现端口占用提示

相关Dockerfile配置

FROM golang as builder

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

ENV ENV=PROD

EXPOSE 5432

COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -o ./cmd/server ./cmd/main.go

FROM scratch
COPY --from=builder /app/cmd/server /app/cmd/server
COPY --from=builder /app/config /app/config

WORKDIR /app/cmd
ENTRYPOINT [ "./server" ]

注:该Dockerfile及对应启动命令在Windows系统下可正常运行

解决方法

使用以下命令启动容器,无需映射5432端口,而是通过--add-host参数让容器直接访问宿主机的PostgreSQL服务:

docker run -it -p 3000:3000 --add-host=host.docker.internal:host-gateway joaofilippe/todo_go:0.1

内容的提问来源于stack exchange,提问作者João Filippe Rossi Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:42:04