我为一个带有Oracle数据库的Flask应用程序提供了REST应用程序,我使用Oracle即时客户端。
我设法从我的电脑运行应用程序,它工作良好,我的任务是为这个应用程序制作一个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"]我使用以下命令:
我的计算机上应用程序的文件夹结构是: C:\Proiecte_ python \Flask_Docker_ app -Start\app,在app中是即时oracle客户端、python文件和Dockerfile。
有人能帮我吗?因为我觉得在Dockerfile CMD路径上出了点问题,或者类似的事情。我尝试过许多变体,但都没有用。
发布于 2021-07-06 09:35:02
Dockerfile的最后一行
CMD ["python", "/app/__init__.py"]等于执行
python /app/__init__.py您所得到的错误是文件__init__.py不存在。
线
WORKDIR /app
COPY . . 告诉容器到/app目录中,然后将主机计算机(例如物理机器)中的所有文件复制到容器的/app目录中。(副本。.的意思是从主机的当前目录(例如您正在运行停靠命令的位置)复制到容器的当前目录-- /app)。
看来,作为接收Dockerfile的一部分,您还应该下载__init.py__文件,然后Dockerfile会为您将其复制到容器中。
或者,您可能忽略了说明中的步骤,在这些步骤中,您应该编写自己的__init.py__文件进行测试。
无论哪种方法,您的解决方案都是找到__init.py__文件,并将其放入当前的工作目录( C:\Proiecte_python\Flask_Docker_App-Start\app )和,确保您运行的停靠构建和停靠从同一个目录运行命令。
cd C:\Proiecte_python\Flask_Docker_App-Start\app
docker build <....>
docker run <....>
docker start <....>或者,您的另一个解决方案是返回说明,确保您已经创建了python文件并将其放置在正确的位置。
作为一个非常基本的酒瓶/Docker教程,请参阅下面的链接
https://runnable.com/docker/python/dockerize-your-flask-application
https://stackoverflow.com/questions/68267419
复制相似问题