MongoDB неверный URI при использовании Docker

#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...