【问题标题】:Connection to docker container failing because of postgis port issue由于 postgis 端口问题,连接到 docker 容器失败
【发布时间】:2017-06-22 20:10:28
【问题描述】:

我的docker容器能够成功构建,但是当我输入命令docker-compose build时,返回以下错误:

Starting docker_etl_1 ... 
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 ... 
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 ... error

ERROR: for 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1  Cannot start service postgis: driver failed programming external connectivity on endpoint 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 (91464afbee8bf7212061797ec0f4c017a56cc3c30c9bdaf513127a6e6a4a5a52): Error starting userland prStarting docker_etl_1 ... done

ERROR: for postgis  Cannot start service postgis: driver failed programming external connectivity on endpoint 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 (91464afbee8bf7212061797ec0f4c017a56cc3c30c9bdaf513127a6e6a4a5a52): Error starting userland proxy: Bind for 0.0.0.0:5432 failed: port is already allocated

这是我的 docker-compose.yaml

version: '2'
services:
  postgis:
    build: ./postgis
    volumes:
      - ../src/main/sql:/sql
    ports:
      - "5432:5432"

  etl:
    build: ./etl
    volumes:
      - ..:/national-voter-file
    entrypoint:
      - python3
      - /national-voter-file/load/loader.py

这里是 Dockerfile:

FROM mdillon/postgis:9.5

ENV POSTGRES_DB VOTER

RUN  mkdir /sql
COPY ./dockerResources/z-init-db.sh /docker-entrypoint-initdb.d/

EXPOSE 5432

Docker ps -a 返回:

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
da74ad97b95c        docker_postgis      "docker-entrypoint..."   About a minute ago   Created                                             docker_postgis_1
5872c6e55fe2        docker_etl          "python3 /national..."   About a minute ago   Exited (2) About a minute ago                       docker_etl_1

但是,当我尝试rm $(docker ps -qa) 时,我收到以下错误:

rm: da74ad97b95c: No such file or directory
rm: 5872c6e55fe2: No such file or directory

我不相信我有另一个容器正在运行,所以我对消息 Bind for 0.0.0.0:5432 failed: port is already allocated 感到困惑

【问题讨论】:

  • 您可以检查是否有任何东西绑定到该端口 - lsof -i4 | grep 5432 等。
  • @OliverCharlesworth 该命令不返回任何内容。应该吗?
  • 听起来您的系统上正在运行的某些东西已经占用了 5432 端口。是否有可能您的主机上已经运行了一个 postgres 实例?
  • @programmerq 这就是问题所在。谢谢!

标签: docker docker-compose postgis


【解决方案1】:

是否有可能您之前运行了相同的 docker-compose,它可能失败或至少未能清理服务? 尝试运行docker ps -a 来检查是否存在任何停止的容器。停止的容器可能会占用端口。如果是这样,只需使用 docker rm $(docker ps -qa) 清除它们

【讨论】:

  • 我已经用这些命令的输出更新了我的问题。为什么remove命令找不到正确的文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多