簡體   English   中英

Dockerfile 運行 Python Pipenv 構建失敗

[英]Dockerfile Run Python Pipenv Build Fails

學習如何 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

Solution, After a lot of troubleshooting I solved the problem by purging my docker containers, the real solution is after a change in your docker files, you need to run docker-compose down before running docker-compose up . 我假設在關閉容器時涉及此過程並且不知道 docker-compose 關閉命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM