【问题标题】:Docker creation with web service in complex architecture在复杂架构中使用 Web 服务创建 Docker
【发布时间】:2022-01-12 11:13:01
【问题描述】:

我需要创建一个包含一些代码的 docker 和一个小型烧瓶服务器来公开部分代码。但我很难让它适用于我复杂的文件架构。 我的文件组织为:

main_project
    --sub_part_1
        --repo_1
            --some_code.py
        --repo_2
            --app.py
            --Dockerfile
        --repo_3
        Pipfile.lock
    --sub_part_2
    --sub_part_3
    --docker-compose.yml

我必须创建一个 Dockerfile 和一个 docker-compose.yml 来运行 app.py(烧瓶应用程序)并在给定端口上公开它

我现在拥有的是

Dockerfile

FROM python:3.8-slim-buster as base

ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONFAULTHANDLER 1
ENV PYTHONUNBUFFERED 1
ENV FLASK_APP subpart_1/repo_2/app.py
ENV FLASK_RUN_HOST 0.0.0.0


RUN pip install pipenv
RUN apt-get update && apt-get install -y --no-install-recommends build-essential libpq-dev gcc musl-dev
COPY ./subpart_1/Pipfile /subpart_1/Pipfile
COPY ./subpart_1/Pipfile.lock /subpart_1/Pipfile.lock

WORKDIR /subpart_1
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy --ignore-pipfile --sequential
WORKDIR /
COPY ./subpart_1/repo_2 /subpart_1/repo_2/
COPY ./subpart_1/repo_1 /subpart_1/repo_1/

ENV PYTHONPATH /subpart_1/

WORKDIR /subpart_1

EXPOSE 5000
CMD ["flask", "run"]

还有 docker-compose.yml

version: "3.9"
services:
  web:
    build: subpart_1/repo_2/
    ports:
      - "5000:5000"

但是当我进入我的 main_project 目录并运行 docker-compose up 我有

failed to compute cache key: failed to walk /var/lib/docker/tmp/buildkit-mount585608421/subpart_1: lstat /var/lib/docker/tmp/buildkit-mount585608421/subpart_1: no such file or directory
ERROR: Service 'web' failed to build : Build failed

【问题讨论】:

    标签: python docker flask docker-compose


    【解决方案1】:

    在我看来这是一个路径问题。

    在您的 docker-compose 构建文件中设置 subpart_1/repo_2/ 时,构建将在此目录中完成。 Docker 会看到以下文件:

    -app.py
    -Dockerfile
    

    因此复制 ./subpart_1/Pipfile /subpart_1/Pipfile 无法工作。

    我认为最简单的方法是:

    version: "3.9"
    services:
      web:
        build: 
          context: .
          dockerfile: sub_part_1/repo_2/Dockerfile
        ports:
          - "5000:5000"
    

    【讨论】:

    • 它就像一个魅力 :) 谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2014-07-06
    • 2011-10-06
    • 2019-11-01
    相关资源
    最近更新 更多