Je suis en train d'essayer de démarrer une application Flask "Hello world" simple dans un conteneur docker mais je continue de recevoir cette erreur : "OSError: [Errno 8] Erreur de format d'exécution : '/app/app.py'"
Mon système d'exploitation hôte est Windows 10.
Mon Dockerfile :
FROM python:3.6
ENV PYTHONBUFFERED 1
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
J'ai un requirements.txt avec Flask==1.0.2.
app.py :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, debug=True)
et docker-compose.yml :
version: '3'
services:
app:
build: .
command: python app.py
ports:
- "8000:8000"
Journal complet du conteneur :
app_1 | * Serving Flask app "app" (lazy loading)
app_1 | * Environment: production
app_1 | WARNING: Do not use the development server in a production environment.
app_1 | Use a production WSGI server instead.
app_1 | * Debug mode: on
app_1 | * Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
app_1 | * Restarting with stat
app_1 | Traceback (most recent call last):
app_1 | File "app.py", line 9, in
app_1 | app.run(host='0.0.0.0', port=8000, debug=True)
app_1 | File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 943, in run
app_1 | run_simple(host, port, self, **options)
app_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 988, in run_simple
app_1 | run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
app_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 332, in run_with_reloader
app_1 | sys.exit(reloader.restart_with_reloader())
app_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader
app_1 | exit_code = subprocess.call(args, env=new_environ, close_fds=False)
app_1 | File "/usr/local/lib/python3.6/subprocess.py", line 287, in call
app_1 | with Popen(*popenargs, **kwargs) as p:
app_1 | File "/usr/local/lib/python3.6/subprocess.py", line 729, in __init__
app_1 | restore_signals, start_new_session)
app_1 | File "/usr/local/lib/python3.6/subprocess.py", line 1364, in _execute_child
app_1 | raise child_exception_type(errno_num, err_msg, err_filename)
app_1 | OSError: [Errno 8] Erreur de format d'exécution : '/app/app.py'
flaskdockerproject_app_1 exited with code 1
MISE À JOUR
Après avoir ajouté le shebang dans app.py comme l'a dit @larsks, je reçois cette erreur : "FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type : '/app/app.py' : '/app/app.py'.
Tous les fichiers sont dans le conteneur et au bon endroit.