![](/img/trans.png)
[英]Bizarre “No such file or directory” error when running a command within a docker container
[英]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"]
我使用以下命令:
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 build和docker 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.