приложение ошибки импорта переменной env для python flask - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть один Dockercontainer с некоторыми функциями, которые работали нормально.Я продублировал его, внес некоторые изменения и предоставил их через docker-compose.Он работает нормально, но неожиданно я запускаю один из новых контейнеров и получаю следующую ошибку:

ra-offerservice    | Usage: flask db migrate [OPTIONS]
ra-offerservice    | 
ra-offerservice    | Error: Could not import "code.app".

(docker-compose --verbose up)

compose.cli.verbose_proxy.proxy_callable: docker wait <- ('2d5df6e050d58a205a1d059493d2e3e99c06dee5ab70c45a0110db4dd18eb9c2')
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('2d5df6e050d58a205a1d059493d2e3e99c06dee5ab70c45a0110db4dd18eb9c2')
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.25/containers/2d5df6e050d58a205a1d059493d2e3e99c06dee5ab70c45a0110db4dd18eb9c2/wait HTTP/1.1" 200 30
compose.cli.verbose_proxy.proxy_callable: docker wait -> {'Error': None, 'StatusCode': 2}
ra-offerservice exited with code 2
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/containers/2d5df6e050d58a205a1d059493d2e3e99c06dee5ab70c45a0110db4dd18eb9c2/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-c', '/usr/local/bin/boot.sh'],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': None,
            'Domainname': '',
            'Entrypoint': ['/bin/sh', '-c', '/usr/local/bin/boot.sh'],
            'Env': ['SERVICE_NAME=ra-offerservice',

Не знаю почемуне находит app.py больше.Я не делаю изменений и до того, как это сработает.

.env File

FLASK_APP=app.py
DATABASE_URL='postgresql://offer:offer@offerdb:5432/offerdb'

boot.sh

#!/bin/sh -e
FLASK_APP=app.py

#FOR DATABASE init
#flask db init
#For DATABASE migration
flask db migrate -m "update"

# sync database to latest migration
flask db upgrade
exec gunicorn --log-level info --log-file=/gunicorn.log --workers 4 --name app -b 0.0.0.0:8080 --reload app:app &
envoy -c /etc/service-envoy.yaml --service-cluster service${SERVICE_NAME}

Dockerfile

FROM envoyproxy/envoy:latest
RUN apt-get update && apt-get -q install -y \
    curl \
    software-properties-common \
    python-software-properties

RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update && apt-get -q install -y \
    python3.7 \
    python3-pip

RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7
RUN python3.7 --version && pip3.7 --version
COPY requirements.txt .
RUN pip3.7 install --no-cache-dir -r ./requirements.txt
RUN pip3.7 install gunicorn
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN mkdir /code
WORKDIR /code
COPY . /code

ADD ./boot.sh /usr/local/bin/boot.sh
RUN chmod u+x /usr/local/bin/boot.sh

ENTRYPOINT /usr/local/bin/boot.sh

app.py

from flask import Flask
from flask_script import Manager
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_jwt_extended import JWTManager
import config
from models.offer import OfferModel
from resources.offer import Offer, OfferList
from resources.offer_admin import ActivateOffer
from resources.test import TestKlasse
from db import db
from ma import ma

app = Flask(__name__)

############################
### LOAD CONFIGRUATION
############################
app.config.from_object(config.DevelopmentConfig)

db.init_app(app)
ma.init_app(app)

api = Api(app)
migrate = Migrate(app, db)
jwt = JWTManager(app)

############################
### ADD REST API ENDPOINTS
############################
#USER Endpoints
api.add_resource(Test, '/api/v1/test/<int:page>')

if __name__ == '__main__':
    app.run()

Я абсолютно не понимаю, что происходит.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Хорошо, у меня было 2 ошибки.

Я пропустил ENV до FLASK_APP=app.py в файле .env выше -> Но я все еще получил ОШИБКУ

ra-offerservice    | Usage: flask db upgrade [OPTIONS]
ra-offerservice    | 
ra-offerservice    | Error: Could not import "code.app".

У меня был __init__.py в той же папке, что и app.py.

ra-demandservice
|-- models
|   |-- __init__.py
|   `-- models.py
|-- resources
|   |-- resources.py
|   `-- __init__.py
|-- __init__.py
|-- app.py
|-- boot.sh
|-- .env
`-- Dockerfile
0 голосов
/ 28 февраля 2019

убедитесь, что exsit init .py показать каталог файлов

...