
[英]Unable to connect postgres to fastapi in docker-compose
[英]Unable to requests FastAPI running in docker-compose
我有一个 Dockerfile,它在端口 8000 上公开了一个 API:
# ..
EXPOSE 8000
ENV PYTHONPATH="src/."
CMD ["gunicorn", "-b :8000", "-k", "uvicorn.workers.UvicornWorker", "fingerprinter.api.server:app"]
它只是一个带有简单端点的简单 FastAPI 服务器:
@app.get("/health")
def health():
return "OK"
这是docker-compose.yaml
的相关部分:
version: "3.7"
services:
fprint-api:
container_name: fprint-api-v2
image: "fprint-api:v0.0.1"
depends_on:
- fprint-db
- fprint-svc
network_mode: "host"
extra_hosts:
- "host.docker.internal:host-gateway"
expose:
- "8000"
build:
context: ../.
dockerfile: docker/Dockerfile.fprint-api
但是,我无法到达终点。
Expose in Dockerfile 并没有真正发布端口Dockerfile-EXPOSE 。 它更像是 Dockerfile 读者的“文档”,它表明该端口旨在发布。
在docker-compose.yml
你 map 端口从 docker 容器到主机系统使用port
Docker 组合端口。 在docker-compose.yml
关键字expose
只为链接的服务暴露端口,它不会将端口发布到宿主机Docker compose - expose
所以你的docker-compose.yml
文件应该是这样的:
version: "3.7"
services:
fprint-api:
container_name: fprint-api-v2
image: "fprint-api:v0.0.1"
depends_on:
- fprint-db
- fprint-svc
# network_mode: "host"
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "8000:8000"
build:
context: ../.
dockerfile: docker/Dockerfile.fprint-api
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.