मैं कंटेनरों के विन्यास में परिवर्तन करके समस्या को ठीक करने में सक्षम था।
विशेष रूप से, मैंने निम्नलिखित परिवर्तन किए:
रेडिस कंटेनर में:
- stunnel जोड़ने और रेडिस कंटेनर के लिए प्रमाणपत्र बनाने के लिए इस ट्यूटोरियल का अनुसरण किया
- डॉकर कंटेनर में स्टनल को कॉन्फ़िगर करने के लिए इस git कोड का उपयोग किया
सेलेरी कंटेनर में:
- लॉग स्तर को बढ़ाकर डीबग . कर दिया गया है
मैंने पहली बार परीक्षण किया कि मैं अपने लोकलहोस्ट से ssl पर रेडिस डॉकटर कंटेनर से जुड़ सकता हूं। यह यहाँ वर्णित है
फिर, मैंने परीक्षण किया कि मैं एसएसएल पर सेलेरी कंटेनर से रेडिस कंटेनर से कनेक्ट कर सकता हूं। डॉकर-कंपोज़ फ़ाइल है:
version: '3'
services:
web:
restart: always
build:
context: ./web
dockerfile: Dockerfile
expose:
- "8000"
volumes:
- /home/webServer/web:/home/flask/app/web
- /home/webServer/redis/ssl:/etc/certs
- data2:/home/flask/app/web/project/img
command: /usr/local/bin/gunicorn -w 2 -t 3600 -b :8000 project:app
depends_on:
- postgres
stdin_open: true
tty: true
nginx:
restart: always
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "80:80"
- "443:443"
volumes:
- /home/webServer/web:/home/flask/app/web
- data2:/home/flask/app/web/project/img
depends_on:
- web
postgres:
restart: always
build:
context: ./postgresql
dockerfile: Dockerfile
volumes:
- data1:/var/lib/postgresql/data
expose:
- "5432"
redis:
build:
context: ./redis
dockerfile: Dockerfile
restart: always
command: sh -c "stunnel /stunnel-redis-server.conf && /usr/local/bin/redis-server /etc/redis/redis.conf"
expose:
- '6380'
ports:
- "6380:6380"
volumes:
- /home/webServer/redis/ssl:/etc/certs
- /home/webServer/redis/conf:/etc/redis
celery:
build:
context: ./web
command: watchmedo auto-restart --directory=./ --pattern=*.py --recursive -- celery worker -A project.celery --loglevel=debug
volumes:
- /home/webServer/web:/home/flask/app/web
- /home/webServer/redis/ssl:/etc/certs
- data2:/home/flask/app/web/project/img
depends_on:
- redis
volumes:
data1:
data2:
अन्य संबंधित फाइलें हैं:
redis docker कंटेनर पर फ़ाइलें: (इन फाइलों में सेटिंग्स का वर्णन यहां किया गया है)
- रेडिस कंटेनर डॉकरफाइल
- redis/conf/redis.conf
- redis/stunnel-redis-server.conf
सेलेरी डॉकटर कंटेनर पर सेटिंग:
cat web/project/flask_celery.py
...
key_file = '/etc/certs/localhost.key'
cert_file = '/etc/certs/private.pem'
ca_file = '/etc/certs/myCA.pem'
...
celery = Celery(app.import_name,
backend=app.config['CELERY_RESULT_BACKEND'],
broker=app.config['CELERY_BROKER_URL'],
broker_use_ssl = {
'ssl_keyfile': key_file,
'ssl_certfile': cert_file,
'ssl_ca_certs': ca_file,
'ssl_cert_reqs': ssl.CERT_REQUIRED
},
redis_backend_use_ssl = {
'ssl_keyfile': key_file,
'ssl_certfile': cert_file,
'ssl_ca_certs': ca_file,
'ssl_cert_reqs': ssl.CERT_REQUIRED
})
------------------
cat project/__init__.py
...
app.config['CELERY_BROKER_URL'] = 'rediss://webserver_redis_1:6380/0'
app.config['CELERY_RESULT_BACKEND'] = 'rediss://webserver_redis_1:6380/0'