我正在从dockerfile运行一个docker容器:
# Use an official Python runtime as the base image
FROM python:3.10.5
# Set the working directory in the container
WORKDIR /code/
RUN pip install pipenv
COPY Pipfile Pipfile.lock /code/
RUN pipenv install --system --dev
# Install Google Chrome dependencies
RUN apt-get update && apt-get install -y \
#a lot of impiort
&& rm -rf /var/lib/apt/lists/*
# Install Google Chrome
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb
RUN apt --fix-broken install -y
# Download and install the latest stable ChromeDriver
RUN CHROME_DRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && \
wget https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip && \
rm chromedriver_linux64.zip && \
mv chromedriver /usr/local/bin/
COPY . /code/
# run the main_daily_task.py file
CMD ["python", "app/main_daily_task.py"]
我在docker容器中得到以下错误:
2023-05-25 16:27:46 Traceback(most recent call last):
2023-05-25 16:27:46 File“/code/app/main_daily_task.py”,line 13,in
2023-05-25 16:27:46从app.database导入SessionLocal
2023-05-25 16:27:46 ModuleNotFoundError:没有名为“app”的模块
但是,当我将导入更改为
from database import SessionLocal
这很有效。
我不能更改导入路径,因为有些文件在其他容器中使用,所以我认为下一个最好的步骤是更改工作目录,但在Dockerfile中它已经是正确的。
我如何解决这个问题,我做错了什么,为什么我的工作目录是code/app/ not code/ how i在dockerfile中指定的?
编辑:也许我需要在运行时指定base_dir?但我认为这是非常丑陋的,而不是它是如何反对。谢谢你提前:)
1条答案
按热度按时间8hhllhi21#
指定绝对路径并确保python脚本具有可执行权限。
该应用程序不是Python模块。在这里,Python将应用程序视为SessionLocale中的模块而不是目录。你最好试试: