使用 docker 的本地主机无法正常工作
localhost using docker compose up not working
我正在尝试在 运行ning docker compose up
时在我的本地计算机上测试一个简单的服务器端点,但在 运行ning [=37= 时似乎没有暴露端口] 这边走。如果我只执行 docker build
和 docker 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
我正在尝试在 运行ning docker compose up
时在我的本地计算机上测试一个简单的服务器端点,但在 运行ning [=37= 时似乎没有暴露端口] 这边走。如果我只执行 docker build
和 docker 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