Docker端口不可用,将端口TCP 0.0.0.0:5432暴露为0.0.0.0:0。
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
在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?)