Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

541
Vistas
Dockerize Flask: Error: al importar 'aplicación', se generó un ImportError

Estoy tratando de dockerizar mi Flask API. Tan pronto como trato de iniciar mi imagen, recibo el mensaje:

 * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off Usage: python -m flask run [OPTIONS] Try 'python -m flask run --help' for help. Error: While importing 'app', an ImportError was raised.

Si estoy iniciando la aplicación Flask con mi terminal python -m flask run todo funciona según lo previsto. Y ahora mismo estoy atascado en este problema.

Aquí está mi código:

 from flask import Flask from bson import json_util from flask_pymongo import PyMongo from flask_cors import CORS import json app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://194.163.147.192:27017/test" CORS(app) mongo = PyMongo(app) def parse_json(data): return json.loads(json_util.dumps(data)) @app.route('/') def home(): return 'Hello' @app.route('/residential', methods=['GET']) def find_residential(): # put application's code here test = mongo.db.acs.find_one({"name": "Residential"}) response = Flask.jsonify(parse_json(test)) response.headers.add('Access-Control-Allow-Origin', '*') return response @app.route('/commercial', methods=['GET']) def find_commercial(): # put application's code here test = mongo.db.acs.find_one({"name": "Commercial"}) response = Flask.jsonify(parse_json(test)) response.headers.add('Access-Control-Allow-Origin', '*') return response @app.route('/healthcare', methods=['GET']) def find_health_care(): # put application's code here test = mongo.db.acs.find_one({"name": "Health Care"}) response = Flask.jsonify(parse_json(test)) response.headers.add('Access-Control-Allow-Origin', '*') return response @app.route('/germany', methods=['GET']) def find_germany(): test = mongo.db.germanies.find_one() response = Flask.jsonify(parse_json(test)) response.headers.add('Access-Control-Allow-Origin', '*') return response if __name__ == '__main__': app.debug = False app.run()

Mis requisitos.txt se ve así

 bson==0.5.10 click==8.0.3 colorama==0.4.4 Flask==2.0.2 Flask-Cors==3.0.10 Flask-PyMongo==2.3.0 itsdangerous==2.0.1 Jinja2==3.0.2 MarkupSafe==2.0.1 pymongo==3.12.1 python-dateutil==2.8.2 six==1.16.0 Werkzeug==2.0.2

Mi Dockerfile se ve así

 FROM python:3.8-slim-buster WORKDIR /api COPY requirements.txt requirements.txt RUN pip3 install -r requirements.txt COPY . . CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

Estoy agradecido por cualquier ayuda :)

La estructura del proyecto es como:

 API L venv L app.py L Dockerfile L requirements.txt
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su problema es, creo, con su archivo de requisitos. En eso incluye bson como una dependencia, que también se incluye en la biblioteca pymongo . Ver esta pregunta . Quitarlo parece resolver el problema:

  ~/tmp/so_q $ docker build -t myimage . 8s nathanielford@nford 20:51:04 Sending build context to Docker daemon 5.12kB ... Successfully tagged myimage:latest  ~/tmp/so_q $ docker run myimage 13s nathanielford@nford 20:51:26 * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on http://192.168.9.2:5000/ (Press CTRL+C to quit)
over 4 years ago · Santiago Trujillo Denunciar

0

No estoy seguro de si ayudará ... pero también tuve el mismo problema y lo acabo de arreglar cambiando mi archivo entrypoint.sh .

Antes de comenzar la aplicación del matraz usando:

 flask run --host 0.0.0.0 --port 5000

Y ahora estoy usando gunicorn:

 gunicorn -b 0.0.0.0:5000 app:app

Así que también tuve que agregar gunicorn en el archivo requirements.txt .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda