Docker:服务器是否在主机 "localhost" 上运行 (127.0.0.1)



我试图为我的fastAPI应用程序创建一个docker容器。然而,每当我尝试运行以下撰写文件时,我得到这个错误:

误差

docker logs api-api-1
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Cannot assign requested address
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?

当我第一次看到错误时,我认为我在容器的本地主机上运行数据库,但我检查了它,数据库在0.0.0.0:5432上运行。.

docker logs api-postgres-1
2022-11-22 05:08:23.971 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432

Dockerfile

FROM python:3.10
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt 
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

组成。YAML

version: '3'
services:
api:
image: fastapilearning
depends_on:
- postgres
ports:
- 80:8000
environment:
- ACCESSTOKENEXPIREMINUTE=${ACCESSTOKENEXPIREMINUTE}
- ALGORITHM=${ALGORITHM}
- DATABASEHOSTNAME=${DATABASEHOSTNAME}
- DATABASENAME=${DATABASENAME}
- DATABASEPASSWORD=${DATABASEPASSWORD}
- DATABASEPORT=${DATABASEPORT}
- DATABASEUSERNAME=${DATABASEUSERNAME}
- SECRETKEY=${SECRETKEY}
command: /bin/bash -c "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"

postgres:
image: postgres
environment:
- POSTGRES_PASSWORD=${DATABASEPASSWORD}
- POSTGRES_DB=${DATABASENAME}
volumes:
- C:UsersbooruledieDocumentsGitfreecodecampdockerPostgresData:/var/lib/postgresql/data

有什么问题吗?

我很确定源代码,因为当我尝试在本地机器上运行它时,我没有得到任何错误。

很可能是PostgreSQL服务器没有正确关闭。

试题:

postgres -D /usr/local/var/postgres

你看:

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

Then Kill the port:

kill -9 PID

最新更新