由于postgis端口问题导致docker容器连接失败

时间:2017-06-22 20:10:28

标签: docker docker-compose postgis

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

感到困惑

1 个答案:

答案 0 :(得分:2)

您是否有可能先运行相同的docker-compose,这可能会失败或者至少无法清理服务? 尝试运行docker ps -a以检查是否存在任何已停止的容器。停止的容器可能会占用端口。如果是这样,请使用docker rm $(docker ps -qa)

清除它们