Docker端口不可用,将端口TCP 0.0.0.0:5432暴露为0.0.0.0:0。

35 浏览
0 Comments

Docker端口不可用,将端口TCP 0.0.0.0:5432暴露为0.0.0.0:0。

我对Docker还不熟悉,正在尝试将我的Django应用程序进行Docker化。我的compose文件如下所示:

docker-compose.yml

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - csgo.env
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db
  db:
    image: postgres:13
    restart: always
    # 可选:将容器端口映射到主机端口,以便能够使用本地数据库客户端进行连接
    ports:
      - 5432:5432
    env_file:
      - csgo.env
    environment:
      - POSTGRES_PASSWORD=db_password
      - DB_NAME=db_name
      - DB_USER=db_user
      - DB_PASSWORD=db_password
      - DB_HOST=localhost
    volumes:
      - ./db/psql-init/db.sql:/docker-entrypoint-initdb.d/db.sql
      - postgres_data:/var/lib/postgresql/data/
volumes:
  postgres_data:

我尝试运行docker-compose up,但出现了这个错误。我想知道问题可能是什么?为什么它说端口已经被占用了?

错误

[+] Running 4/4
 ⠿ Network csgo_default         Created                                                                                               0.0s
 ⠿ Volume "csgo_postgres_data"  Created                                                                                               0.0s
 ⠿ Container csgo-db-1          Created                                                                                               0.1s
 ⠿ Container csgo-web-1         Created                                                                                               0.1s
Attaching to csgo-db-1, csgo-web-1
Error response from daemon: Ports are not available:
 exposing port TCP 0.0.0.0:5432 -> 0.0.0.0:0: listen tcp 0.0.0.0:5432:
 bind: address already in use

0
0 Comments

在Mac上列出了所有的postgres端口:

sudo lsof -i -P | grep LISTEN | grep :5432

postgres 9785 postgres 7u IPv6 0xd0180dc2abc35a25 0t0 TCP *:5432 (LISTEN)

postgres 9785 postgres 8u IPv4 0xd0180dc778b0fe35 0t0 TCP *:5432 (LISTEN)

然后杀死了所有这些进程 (How do I close an open port from the terminal on the Mac?

0