[英]Can't open file 'main.py': [Errno 2] No such file or directory
[英]Dockerfile: can't open file './main.py': [Errno 2] No such file or directory
我收到此錯誤: python: can't open file '/src/main.py': [Errno 2] No such file or directory
:
FROM python:3.9-slim AS compile
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /my-app
COPY requirements.txt .
RUN pip install -r requirements.txt
ADD src/ ./src
RUN pip install .
FROM python:3.9-slim AS build
COPY --from=compile/opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
CMD ["python", "/src/main.py"]
我也試過這個,但它仍然給我同樣類型的關於找不到 main.py 的錯誤:我試過./src/main/py、/src/main.py、/src/main.py、./main .py。 我嘗試了一切,我開始懷疑錯誤在其他地方
/src/main.py
是系統根目錄的絕對路徑。
為了與您當前目錄相關,請使用./src/main.py
我會簡化你的 docker 文件如下:
# base image
FROM amazonlinux:1
# Set the working directory
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install requirements
RUN pip install -r requirements.txt
# Define environment variable
ENV PYTHONPATH "${PYTHONPATH}:/app"
# Run main.py when the container launches
ENTRYPOINT ["python", "-u", "src/main.py"]
問題是您有多階段構建(2x FROM)並且您只將它們添加到第一階段。
FROM python:3.9-slim AS compile
[..]
ADD src/ ./src
ADD setup.py .
RUN pip install .
FROM python:3.9-slim AS build
[..]
您可以在 2. 階段使用第二個COPY --from=
語句來解決此問題。 此外,您的 CMD 是錯誤的。 要么給它完整路徑,要么用 a 開始一個相對路徑。 目錄/文件名( /my-app/src/main.py
, ./src/main.py
, src/main.py
)。
FROM python:3.9-slim AS compile
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /my-app
COPY requirements.txt .
RUN pip install -r requirements.txt
ADD src/ ./src
ADD setup.py .
RUN pip install .
FROM python:3.9-slim AS build
COPY --from=compile/opt/venv /opt/venv
COPY --from=compile/my-app /my-app # ADDED
WORKDIR /my-app # ADDED
ENV PATH="/opt/venv/bin:$PATH"
CMD ["python", "/my-app/src/main.py"] # FIXED
最后,您只是在丟棄的階段設置工作目錄,但這僅在您沒有為 cmd 提供完整路徑或者您需要特定的工作目錄時才有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.