我试图为我的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