【问题标题】:Dockerfile Run Python Pipenv Build FailsDockerfile 运行 Python Pipenv 构建失败
【发布时间】:2021-07-23 12:18:56
【问题描述】:

学习如何 dockerize 应用程序,我遇到了一个障碍,我的 Dockerfile 构建无法输出:

app_1  | Traceback (most recent call last):
app_1  |   File "app.py", line 4, in <module>
app_1  |     from flask import Flask, render_template, request, json
app_1  | ModuleNotFoundError: No module named 'flask'
bucketlist-flask-mysql_app_1 exited with code 1

容器中的目录结构为:

/应用程序

/app -> app.py Pipfile.lock

仓库中的目录是

Dockerfile docker-compose.yml /src

/src -> Pipfile Pipfile.lock sql_scripts/FlaskApp/app.py

Dockerfile 是:

# alpine with py3.8 - reqd version of python for pipenv
from python:3.8-alpine

#EXPOSE port, default is 5000, app uses 5000
EXPOSE 5000

# create a directory to run the app in
WORKDIR /app

# install pip system-wide
RUN pip install pipenv

#move the files into /app
COPY src/Pipfile.lock /app

# add the application files
COPY src/FlaskApp /app

# run the application at launch
RUN pipenv install --ignore-pipfile
CMD ["pipenv", "run", "python3", "app.py"]

docker-compose 是:

version: "3"
services:
    app:
        build: .
        links:
            - db
        ports:
            - "5000:5000"
    db:
        image: mariadb
        restart: always
        ports:
            - "32000:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root
        volumes:
            - ./src/sql_scripts:/docker-entry-point-initdb.d/:ro

我已经做了很多迭代和故障排除。如果我运行启动一个 python:3.8-alpine 容器并手动复制 Pipfile.lock 和 app.py 我可以在 sh 中运行:

pip install pipenv
pipenv install --ignore-pipfile
pipenv run python3 app.py

当手动从 sh 运行时,应用程序构建和运行完美,我目前最好的结论是进程可能同时运行并且不允许 pipenv 安装完成执行?

作为参考,我相信python很好,但是app.py的前4行是:

#!/bin/bash
"exec" "pipenv" "run" "python3" "$(pwd | sed 's?src.*?src/FlaskApp/app.py?g')"
#START: app.py code \/
from flask import Flask, render_template, request, jsom

【问题讨论】:

    标签: docker docker-compose pip dockerfile pipenv


    【解决方案1】:

    解决方案! 经过大量故障排除后,我通过清除 docker 容器解决了问题,真正的解决方案是在更改 docker 文件之后,您需要在运行 docker-compose up 之前运行 docker-compose down。我假设在关闭容器时涉及此过程并且不知道 docker-compose down 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2020-09-21
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多