指定 API 路径的 Dockerfile

Dockerfile specifying path of API

我是第一次使用 docker。我在 angular 中有一个 Web 应用程序,在 python/flask 中有一个后端应用程序。经过一番努力,我终于设法让一切正常工作,但是 docker 在我的后端找不到我的 API 程序:

我的服务器文件位于 /my_backend/src/server.py
我的 docker 文件位于 /my_backend/Dockerfile.dockerfile

Dockerfile.dockerfile的内容:

FROM python:3.7-slim
COPY /src .
WORKDIR /src/app
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt
CMD ["python","server.py"]

命令提示符中的错误信息是

Attaching to backend, frontend
backend   | python: can't open file 'server.py': [Errno 2] No such file or directory
backend exited with code 2

欢迎随时询问更多信息。
我使用了这个教程:https://medium.com/analytics-vidhya/dockerizing-angular-application-and-python-backend-bottle-flask-framework-21dcbf8715e5

如果您的脚本在 /src 目录中,请不要使用 WORKDIR /src/app,而是使用 WORKDIR /srcCMD ["python","../server.py"]

解决方案 1:

FROM python:3.7-slim
COPY /src .
WORKDIR /src    # <- HERE
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt
CMD ["python","server.py"]

解决方案 2:

FROM python:3.7-slim
COPY /src .
WORKDIR /src/app
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt
CMD ["python","../server.py"]     # <- HERE, or "/src/server.py"

@TheFool 建议:

FROM python:3.7-slim
WORKDIR /src/app  # Swap WORKDIR and COPY
COPY /src .
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt
CMD ["python","server.py"]

转动你的工作目录并复制指令以使其工作。

FROM python:3.7-slim
WORKDIR /src/app # workdir first
COPY /src .
ENV PYTHONUNBUFFERED 1
COPY requirements.txt /tmp/requirements.txt
RUN python3 -m pip install -r /tmp/requirements.txt
CMD ["python","server.py"]