diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml index 4ada4333..cf9b16b6 100644 --- a/docker/docker-compose.prod.yml +++ b/docker/docker-compose.prod.yml @@ -7,7 +7,6 @@ x-shared-secret-environment: HOST: 0.0.0.0 WEBAPP_PORT: 8080 LOKOLE_STORAGE_PROVIDER: AZURE_BLOBS - LOKOLE_QUEUE_BROKER_SCHEME: azureservicebus CONNEXION_SPEC: dir:/app/opwen_email_server/swagger CELERY_QUEUE_NAMES: all TESTING_UI: "False" @@ -44,3 +43,21 @@ services: image: ascoderu/opwenserver_app:latest command: ["/app/docker/app/run-celery.sh"] <<: *shared-secret-environment + depends_on: + - rabbitmq + + rabbitmq: + image: rabbitmq:management-alpine + environment: + # Use same creds from azure.env for convenience + RABBITMQ_DEFAULT_USER: ${LOKOLE_EMAIL_SERVER_QUEUES_SAS_NAME} + RABBITMQ_DEFAULT_PASS: ${LOKOLE_EMAIL_SERVER_QUEUES_SAS_KEY} + volumes: + - rabbitmq_data:/var/lib/rabbitmq + restart: always + # Optional: expose management UI + # ports: + # - 15672:15672 + +volumes: + rabbitmq_data: diff --git a/opwen_email_server/config.py b/opwen_email_server/config.py index a9f8780b..1030fbd8 100644 --- a/opwen_email_server/config.py +++ b/opwen_email_server/config.py @@ -1,3 +1,5 @@ +from urllib.parse import quote + from environs import Env env = Env() @@ -65,6 +67,9 @@ QUEUE_BROKER_PASSWORD = env('LOKOLE_EMAIL_SERVER_QUEUES_SAS_KEY') QUEUE_BROKER_HOST = env('LOKOLE_EMAIL_SERVER_QUEUES_NAMESPACE') if env('LOKOLE_QUEUE_BROKER_SCHEME', ''): - QUEUE_BROKER = f"{QUEUE_BROKER_SCHEME}://{QUEUE_BROKER_USERNAME}:{QUEUE_BROKER_PASSWORD}@{QUEUE_BROKER_HOST}" + # URL-encode credentials to handle special characters + username = quote(QUEUE_BROKER_USERNAME, safe='') + password = quote(QUEUE_BROKER_PASSWORD, safe='') + QUEUE_BROKER = f"{QUEUE_BROKER_SCHEME}://{username}:{password}@{QUEUE_BROKER_HOST}" else: QUEUE_BROKER = env('LOKOLE_QUEUE_BROKER_URL', '')