由于 postgis 端口问题,与 docker 容器的连接失败

Connection to docker container failing because of postgis port issue

我的 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 returns:

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

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

清除它们