Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

538
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!