我已經設定了一個 Flask API 來嘗試在線托管我用于移動應用程式的 TensorFlow 模型 - 我已經創建了一個包含所有正確匯入的 docker 影像,每當我運行 docker 容器時,終端都會顯示:
- 在所有地址(0.0.0.0)上運行
- 在http://127.0.0.1:5000上運行
- 在http://172.17.0.3:5000上運行
但是當我訪問這些鏈接中的任何一個時,它們都會超時——我相信我知道這是因為真實的 URL 在 docker 的本地主機中,但我沒有解決方案,我不知道如何從一旦我將 API 托管在 AWS 之類的東西上,任何 IP 都可以。
所以我需要的幫助是:我如何訪問 API 以便我可以測驗它并確保它作業以及進一步我將如何將它部署到無服務器的東西。
對不起,如果這是基本的,這是我第一次使用 docker。任何幫助將不勝感激。
我的 Docker 檔案:
FROM python:3.9.0-stretch
# Maintainer info
LABEL maintainer="{my_email}"
# Make working directories
RUN mkdir -p /digit-api
WORKDIR /digit-api
# Upgrade pip with no cache
RUN pip install --no-cache-dir -U pip
# Copy application requirements file to the created working directory
COPY requirements.txt .
# Install application dependencies from the requirements file
RUN pip install -r requirements.txt
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
# Copy every file in the source folder to the created working directory
COPY . .
# Run the python application
CMD ["flask", "run", "-h", "0.0.0.0", "-p", "5000"]
我知道問題不在于 python 檔案,因為我在沒有 docker 影像的情況下在本地主機上測驗了它并且它作業正常 - 但我需要一種方法來 24/7 在線訪問,這就是我使用 docker 的原因。
我知道這里有類似的問題,但他們似乎都有的唯一解決方案是 app.run(host='0.0.0.0') 我在我的 python 檔案中有,沒有任何改變。
編輯:我已經運行了 docker run -d -p 5001:5001 nea-api(5000 是出于某種我也不太明白的原因),現在回應是 localhost 沒有發送任何資料而不是超時。
uj5u.com熱心網友回復:
您的應用程式正在偵聽埠 5000。第二個docker run -p埠號必須與此埠匹配。這兩個埠號不需要相互匹配。因此,要將主機上的埠 5001 映射到容器中的埠 5000,您可以使用
# host port (your choice)
# vvvv
docker run -d -p 5001:5000 nea-api
# ^^^^
# container port (matches server process's port)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/536268.html
標籤:码头工人烧瓶
