Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

313
Visualizações
Flask CLI lanza 'OSError: [Errno 8] Exec format error' cuando se ejecuta a través de docker-compose

Estoy ejecutando una aplicación Flask con un script personalizado . O tratando de hacerlo, de todos modos.

Estoy en Windows 10 y la aplicación debería ejecutarse en un contenedor Docker de Linux con el comando:

 docker-compose up api

Docker-compose es version 1.23.2 . En el dockerfile, el servicio api se ejecuta a través del comando:

 command: python manage.py run --host "0.0.0.0" --with-threads

Mientras intenta iniciarse, veo la excepción.

 OSError: [Errno 8] Exec format error: '/api/manage.py'

Inicialmente pensé que serían los temidos finales de línea de Windows, ven por mí una vez más, pero ejecutar dos2unix en todos mis archivos fuente no ha resuelto el problema.

¿Cómo puedo evitar este error?


gestionar.py

 import click from flask.cli import FlaskGroup from my_app_api import create_app def create_my_app(info): return create_app() @click.group(cls=FlaskGroup, create_app=create_my_app) def cli(): pass if __name__ == "__main__": cli()

Rastreo completo

 api_1 | Traceback (most recent call last): api_1 | File "manage.py", line 22, in <module> api_1 | cli() api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__ api_1 | return self.main(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 380, in main api_1 | return AppGroup.main(self, *args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 717, in main api_1 | rv = self.invoke(ctx) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1137, in invoke api_1 | return _process_result(sub_ctx.command.invoke(sub_ctx)) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 956, in invoke api_1 | return ctx.invoke(self.callback, **ctx.params) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 555, in invoke api_1 | return callback(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/decorators.py", line 64, in new_func api_1 | return ctx.invoke(f, obj, *args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 555, in invoke api_1 | return callback(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 438, in run_command api_1 | use_debugger=debugger, threaded=with_threads) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 988, in run_simple api_1 | run_with_reloader(inner, extra_files, reloader_interval, reloader_type) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 332, in run_with_reloader api_1 | sys.exit(reloader.restart_with_reloader()) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader api_1 | exit_code = subprocess.call(args, env=new_environ, close_fds=False) api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 287, in call api_1 | with Popen(*popenargs, **kwargs) as p: api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 729, in __init__ api_1 | restore_signals, start_new_session) api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 1364, in _execute_child api_1 | raise child_exception_type(errno_num, err_msg, err_filename) api_1 | OSError: [Errno 8] Exec format error: '/api/manage.py'
over 4 years ago · Santiago Trujillo
4 Respostas
Responde à pergunta

0

Este es un nuevo comportamiento en Werkzeug 0.15. La degradación a Werkzeug 0.14.1 puede funcionar, pero 0.14 ya no es compatible, por lo que será mejor que corrija el problema con su archivo como se describe en las otras respuestas.

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta de @CristiFati me funcionó con 1 paso adicional:

También tuve que corregir el EOL de \r\n a \n .


Lo siento, no tengo suficientes puntos para agregar un comentario y tengo que abrir una nueva respuesta ...

over 4 years ago · Santiago Trujillo Relatório

0

Si deshabilita el modo de depuración (no pase debug=True o configure FLASK_DEBUG=0 ), el recargador no se utilizará y, por lo tanto, este problema no ocurrirá. La compensación es que ya no tienes el recargador.

 if __name__ == "__main__": connexion_app.run(host="0.0.0.0", port=constants.API_PORT, debug=True)

Es preferible arreglar esto asegurándose de que los archivos marcados como ejecutables tengan una línea de interpretación, como #!/usr/bin/env python3 (de https://stackoverflow.com/a/55272071 ).

over 4 years ago · Santiago Trujillo Relatório

0

Werkzeug==0.15.4 tiene esta pregunta。

 pip install --user Werkzeug==0.16
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda