使用 docker 的本地主机无法正常工作

localhost using docker compose up not working

我正在尝试在 运行ning docker compose up 时在我的本地计算机上测试一个简单的服务器端点,但在 运行ning [=37= 时似乎没有暴露端口] 这边走。如果我只执行 docker builddocker run,我可以使用 localhost 来获得成功的端点调用,但当我使用我的 docker 撰写文件时则不行。

docker-compose.yml 文件:

version: '3'
  services:
    simple:
      build:
      context: .
      dockerfile: Dockerfile
    container_name: simple
    ports:
      - 3000:80
    environment:
      - SOMEKEY=ABCD
      - ANOTHERKEY=EFG

Docker 文件

FROM python:3.9.5

ARG VERSION
ARG SERVICE_NAME
ENV PYTHONPATH=/app
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt 
COPY app /app/app
COPY main.py /app/
CMD ["python", "./app/main.py"]

然后是我的 main.py 文件

import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

if __name__ == '__main__':
    uvicorn.run(app, port=3000, host="0.0.0.0")

docker compose up 似乎不想暴露给本地主机。

我在构建中使用的内容和 运行 确实公开了: docker build -t test-test . docker run -p 3000:3000 test-test

有没有办法通过 docker compose up 将端口公开给本地主机?

端口的语法是HOST:CONTAINER。容器上的端口是 3000,所以你弄反了。

version: '3'
  services:
    simple:
     build:
      context: .
      dockerfile: Dockerfile
    container_name: simple
    ports:
      - 80:3000
    environment:
      - SOMEKEY=ABCD
      - ANOTHERKEY=EFG