docker - 如何在后台运行 Docker 应用程序而不是输出到终端
问题描述
我在 shell 中运行一个带有独角兽的 FastAPI。但是当我在 docker 中运行它时,它仍然将输出输出到 shell 而不是 Docker,如下所示:
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)
如何使应用程序将其输出输出到包含的 shell 并在后台将容器作为普通 Docker 容器运行?
这是代码:
from typing import Optional
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=5000, log_level="info")
这是 Dockerfile:
FROM python:3.9.3-buster
WORKDIR /opt
ADD . .
RUN pip install "poetry==1.1.5"
RUN python -m venv /venv
RUN poetry export -f requirements.txt | /venv/bin/pip install -r /dev/stdin
RUN chmod u+x main.py
CMD ["/venv/bin/python", "main.py", "--port", "5000"]
我像这样运行和构建 Docker 映像:
docker build -t example00 .
docker run -p 5000:5000 example00
有人有什么建议吗?
解决方案
你需要使用-d
标志
docker run -d -p 5000:5000 example00
推荐阅读
- laravel - 如何计算laravel中的类别?
- ruby-on-rails - Rails 渲染 JSON 导致辅助方法被调用两次
- java - 如何在maven项目中使用动态查询?
- python - 如何在一个单元格中同时显示随机数据和数据集的描述性统计数据?(Jupyter 笔记本,熊猫)
- javascript - 没有自动重新加载页面,webpack-dev-server
- javascript - 将axios返回的图片转换成vue可以显示的东西
- vim - 在 vim 中安装插件
- sql - 如何在不使用窗口函数的情况下解决这个 sql 问题
- user-interface - Dat.GUI 中的随机化值
- react-native - 我如何在标题 react-native 中的按钮周围更改背景颜色