#docker #pymongo
Вопрос:
У меня есть небольшое приложение для колбы, использующее MongoDB. Когда я запускаю приложение локально, используя flask run, оно работает идеально, и проблем с базой данных нет. Однако, когда я пытаюсь создать контейнер с помощью docker-compose up —build, я получаю эту ошибку:
Successfully tagged web_messaging_website:latest
Recreating web_messaging_website_1 ... done
Attaching to web_messaging_website_1
website_1 | [2021-04-04 17:52:35 0000] [1] [INFO] Starting gunicorn 20.1.0
website_1 | [2021-04-04 17:52:35 0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
website_1 | [2021-04-04 17:52:35 0000] [1] [INFO] Using worker: sync
website_1 | [2021-04-04 17:52:35 0000] [8] [INFO] Booting worker with pid: 8
website_1 | [2021-04-04 17:52:36 0000] [8] [ERROR] Exception in worker process
website_1 | Traceback (most recent call last):
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
website_1 | worker.init_process()
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
website_1 | self.load_wsgi()
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
website_1 | self.wsgi = self.app.wsgi()
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
website_1 | self.callable = self.load()
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
website_1 | return self.load_wsgiapp()
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
website_1 | return util.import_app(self.app_uri)
website_1 | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 412, in import_app
website_1 | app = app(*args, **kwargs)
website_1 | File "/web_messaging/web_messaging/app.py", line 31, in create_app
website_1 | extensions(app)
website_1 | File "/web_messaging/web_messaging/app.py", line 72, in extensions
website_1 | mongo.init_app(app)
website_1 | File "/usr/local/lib/python3.7/site-packages/flask_pymongo/__init__.py", line 147, in init_app
website_1 | parsed_uri = uri_parser.parse_uri(uri)
website_1 | File "/usr/local/lib/python3.7/site-packages/pymongo/uri_parser.py", line 434, in parse_uri
website_1 | "begin with '%s' or '%s'" % (SCHEME, SRV_SCHEME))
website_1 | pymongo.errors.InvalidURI: Invalid URI scheme: URI must begin with 'mongodb://' or 'mongodb srv://'
website_1 | [2021-04-04 17:52:36 0000] [8] [INFO] Worker exiting (pid: 8)
website_1 | [2021-04-04 17:52:36 0000] [1] [INFO] Shutting down: Master
website_1 | [2021-04-04 17:52:36 0000] [1] [INFO] Reason: Worker failed to boot.
Я использую Flask-PyMongo==2.3.0
и pymongo==3.11.3.
.
├── ...
├── web_messaging
│ ├── app.py
│ ├── __init__.py
│ ├── ...
│
├── __init__py
├── .env
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
└── config
├── settings.py
├── gunicorn.py
└── __init__.py
докер-compose.yml
version: '2'
services:
website:
build: .
command: >
gunicorn -c "python:config.gunicorn" --reload "web_messaging.app:create_app()"
env_file:
- '.env'
volumes:
- '.:/web_messaging'
ports:
- '8000:8000'
.env
MONGO_URI='mongodb srv://USERNAME:PASSWORD@cluster0.fut2y.mongodb.net/mousset?ssl=trueamp;ssl_cert_reqs=CERT_NONE'
Комментарии:
1. Просто предположение — попробуйте удалить кавычки в вашем файле .env, например
MONGO_URI=mongodb srv...