【发布时间】:2020-12-30 09:08:47
【问题描述】:
有这个 Dockerfile
Dockerfile
FROM python:3.8
ADD Pipfile.lock /app/Pipfile.lock
ADD Pipfile /app/Pipfile
WORKDIR /app
COPY . /app
RUN pip install pipenv
RUN pipenv install --system --deploy --ignore-pipfile
ENV FLASK_APP=app/http/api/endpoints.py
ENV FLASK_RUN_PORT=4433
ENV FLASK_ENV=development
ENTRYPOINT ["python"]
CMD ["-m", "flask", "run"]
为什么我的应用会在 Docker 容器中运行
/app/app/http/api
应用被重复
如何复制到:
/app/http/api
我该如何解决?
更新 1:
我的 docker-compose 和 Dockerfile 和 ls 输出。
https://0bin.net/paste/ePRws72M#IV8H6iRJ+UMJFr8lB7CRQYKwsnGYflsmOlyvFxZA7zE
【问题讨论】:
-
.在宿主机上的目录结构是什么样的?你有没有机会像./app/http/...这样的结构或者你在复制命令中切换了源和目标?COPY . /app将主机当前目录中的任何内容复制到容器中的/app。 -
是的,就是这样。那么如何更正Dockerfile呢?
-
COPY ./app /app -
谢谢。但它仍然无法正常工作。如果我删除了它正确复制的卷,但 Flask 不响应请求,则不起作用:/
-
它确实复制正确,但是在您的 docker compose 文件中,您将主机上的当前目录安装到安装点
/app下的容器中,这当然隐藏了现有的/app目录容器...如果您在容器内执行ls /app,您会看到,它的内容与您在主机上的项目目录完全相同...
标签: docker docker-compose dockerfile