我正在嘗試構建一個 Flask docker 映像。我得到錯誤:
zsh:找不到命令:燒瓶
我按照這個舊教程來讓事情正常進行。https://medium.com/@rokinmaharjan/running-a-flask-application-in-docker-80191791e143
為了學習如何使用 Docker 啟動燒瓶網站,我讓一切變得簡單。我的 Docker 鏡像應該只打開一個 Hello world 的首頁。
我的例子.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run()
我的 Dockerfile:
FROM ubuntu:16.04
RUN apt-get update -y
RUN apt-get install python -y
RUN apt-get install python-pip -y
RUN pip install flask
COPY example.py /home/example.py
ENTRYPOINT FLASK_APP=/home/example.py flask run --host=0.0.0.0
我跑
須藤碼頭建設。-t 燒瓶應用
構建影像。
當我跑
docker run -p 8080:5000 燒瓶應用程式
我得到錯誤:
zsh:找不到命令:燒瓶
我在這里想念什么?
uj5u.com熱心網友回復:
好吧,確實您正在遵循一個非常古老的教程。
我不會詳細說明在沒有 WSGI 服務器的情況下直接使用 Flask 是否是你應該做的事情,所以我只關注你的問題。
簡潔的答案:您的 中沒有已安裝的模塊,因此pip您PATH當然不能呼叫它們。Flask 就是其中的一個模塊。
擴展答案:繼續閱讀。
首先,使用該基礎映像,您正在下載舊版本的 Python 和pip,其次:您不需要完全成熟的作業系統來運行 Flask 應用程式。與來自 Ubuntu 16 的舊鏡像相比,已經有一些使用 Python 的基礎鏡像具有python:3.9.10-slim-buster更少的依賴項和可能的漏洞。
FROM python:3.9.10-slim-buster
其次,您不應該依賴于基礎映像上的內容,您應該venv為您的應用程式使用環境 (),您可以在其中安裝 Flask 和應用程式的任何其他應在requirements.txt. 此外,您應該選擇要將代碼放置在哪個作業目錄中(/usr/src/app通常是一個常見的地方)。
指出你默認暴露哪個埠也是一件好事(盡管每個人都知道 Flask 暴露了 5000 埠)。
FROM python:3.9.10-slim-buster
WORKDIR /usr/src/app
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m pip install flask
COPY example.py .
ENTRYPOINT FLASK_APP=example flask run --host=0.0.0.0
EXPOSE 5000
結果:
? docker run -p 8080:5000 flask-app
* Serving Flask app 'example' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.17.0.2:5000/ (Press CTRL C to quit)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/423111.html
標籤:
