簡體   English   中英

運行Docker容器時沒有此類文件或目錄錯誤

[英]No such file or directory error when running Docker container

我有一個用於 Flask 應用程序的 REST Api,其中包含我使用 Oracle Instant Client 的 Oracle 數據庫。

我設法從我的計算機上運行該應用程序,它運行良好,我的任務是為此應用程序制作一個 Docker 文件。 我對 Docker 沒有太多經驗。

這是我寫的Dockerfile

FROM python:3.7.5-slim-buster

# Installing Oracle instant client
WORKDIR    /opt/oracle
RUN        apt-get update && apt-get install -y libaio1 wget unzip \
        && wget 
https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite- 
linuxx64.zip \
        && unzip instantclient-basiclite-linuxx64.zip \
        && rm -f instantclient-basiclite-linuxx64.zip \
        && cd /opt/oracle/instantclient* \
        && rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci \
        && echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle- 
instantclient.conf \
        && ldconfig

WORKDIR    /app
COPY       . . 

EXPOSE     5000

CMD ["python", "/app/__init__.py"]

我使用以下命令:

  1. docker build - < Dockerfile 並且 Docker 鏡像構建沒有錯誤
  2. docker run -d -p 5000:5000(docker 鏡像 ID)
  3. docker start -ai (docker container id) 我得到這個錯誤: python: can't open file '/app/__init__.py': [Errno 2] No such file or directory

我電腦上app的文件夾結構如下:C:\\Proiecte_python\\Flask_Docker_App-Start\\app,app里面是即時oracle客戶端python文件和Dockerfile。

請有人幫助我,因為我認為 Dockerfile CMD 路徑或類似的東西有問題。 我嘗試了很多變體,但沒有一個工作

Dockerfile 的最后一行

CMD ["python", "/app/__init__.py"]

相當於執行

python /app/__init__.py

您得到的錯誤是文件__init__.py不存在。

線條

WORKDIR    /app
COPY       . . 

告訴您的容器將 CD 放入/app目錄,然后將所有文件從您的主機(例如您的物理機)復制到容器/app目錄中。 COPY . .表示從主機的當前目錄(例如,您從中運行 docker 命令的位置)復制到容器的當前目錄 - /app )。

似乎作為接收 Dockerfile 的一部分,您還應該下載__init.py__文件,然后 Dockerfile 會將其復制到您的容器中。

或者,您可能錯過了說明中打算編寫自己的__init.py__文件進行測試的步驟。

無論哪種方式,您的解決方案都是找到__init.py__文件並將其放入您當前的工作目錄( C:\\Proiecte_python\\Flask_Docker_App-Start\\app )確保您從同一目錄運行docker builddocker run命令,例如 -

cd C:\Proiecte_python\Flask_Docker_App-Start\app
docker build <....>
docker run <....>
docker start <....>

或者您的其他解決方案是返回說明並確保您已創建python文件並將其放在正確的位置。

作為一個非常基本的 Flask/Docker 教程,請參閱以下鏈接

https://runnable.com/docker/python/dockerize-your-flask-application

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM