【发布时间】:2021-07-06 17:35:02
【问题描述】:
我有一个用于 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"]
我使用以下命令:
- docker build -
- docker run -d -p 5000:5000 (docker image id)
- docker start -ai(docker 容器 ID)
我得到这个错误:
python: can't open file '/app/__init__.py': [Errno 2] No such file or directory
我电脑上应用的文件夹结构如下: C:\Proiecte_python\Flask_Docker_App-Start\app 在应用程序中是即时 oracle 客户端,python 文件和 Dockerfile。
请有人帮助我,因为我认为 Dockerfile CMD 路径或类似的东西有问题。我尝试了许多变体,但没有一个工作
【问题讨论】:
-
为什么用
__init__.py启动python? -
这就是我从某人那里得到我的项目的方式。我的任务只是为它构建一个 Dockerfile
-
我认为 dockerfile 的大部分内容都被省略了,
COPY部分。 -
如果你改为运行
docker build .,效果会更好吗?您是否验证过您检查的内容在容器内(例如,docker run --rm 0123456789ab ls -l /app)?
标签: python oracle docker dockerfile