Flask Приложение работает в терминале, но не в Docker контейнере - PullRequest
0 голосов
/ 08 мая 2020

Итак, у меня есть приложение flask, которое отлично работает, когда я запускаю его через терминал, но по какой-то причине, если я запускаю контейнер docker, оно мгновенно завершается с «нулевым кодом выхода».

Вот структура папок: https://imgur.com/a/BOGCt6S

docker -compose.yml:

version: '3.2'

services:

    flask-app:
        build: ./Flask_App
        volumes:
            - ./Flask_App/static:/Flask_App/static
            - ./Flask_App/db:/Flask_App/db
        ports:
            - '5001:5001'
        # restart: unless-stopped

Dockerfile:

FROM python:3

# Setup env
COPY requirements.txt ./

RUN pip install -r requirements.txt

# Setup App
RUN mkdir -p /Flask_App

COPY . /Flask_App

WORKDIR /Flask_App

EXPOSE 5001

ENTRYPOINT [ 'python3' ]

CMD [ 'app.py' ]

и файл app.py: (я знаю, что это просто импорт, но он отлично работает, когда я запускаю его через терминал на хосте, поэтому он, вероятно, работает нормально)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_bootstrap import Bootstrap

from forms import *

app = Flask(__name__)
app.config.from_pyfile('config.py')
Bootstrap(app)

db = SQLAlchemy(app)

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

from views import *

if __name__ == '__main__':
    app.run(host=app.config['HOST'], port=app.config['PORT'], debug=app.config['DEBUG'])

и на всякий случай вот часть файла config.py:

DEBUG = False
HOST = '0.0.0.0'
PORT = 5001

1 Ответ

0 голосов
/ 09 мая 2020

Как сказал Дэвид Мейз в комментарии, одинарные кавычки ('), которые я использовал в ENTRYPOINT и CMD, следует заменить на двойные кавычки ("), поскольку они должны быть JSON массивами.

...