I am working on kafka producer docker app which is working fine on MAC however it is failing on windows and Linux machines with the following error. The docker build is working on windows/linux/mac however when we run docker run, the apps seems to ONLY work on MAC.
Error:
[2022-09-06 17:53:42,174] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2051, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1501, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1499, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1485, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/function/model/api.py", line 21, in home
return modelcode()
File "/function/model/api.py", line 49, in modelcode
producer = SerializingProducer(producer_conf)
File "/usr/local/lib/python3.8/site-packages/confluent_kafka/serializing_producer.py", line 109, in __init__
super(SerializingProducer, self).__init__(conf_copy)
cimpl.KafkaException: KafkaError{code=_INVALID_ARG,val=-186,str="Failed to create producer: No
provider for SASL mechanism GSSAPI: recompile librdkafka with libsasl2 or openssl support. Current build options: PLAIN SASL_SCRAM OAUTHBEARER"}
Dockerfile:
ARG FUNCTION_DIR="/function"
FROM python:3.8
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y install && apt-get -y install
RUN apt-get -y install librdkafka-dev
RUN pip install --no-binary :all: confluent-kafka==0.11.0
ARG FUNCTION_DIR
RUN mkdir -p ${FUNCTION_DIR}
RUN apt-get -y install libsasl2-modules-gssapi-mit
COPY cacert.pem ${FUNCTION_DIR}
COPY CP_KAFKA_EAC_CC_DEV.keytab ${FUNCTION_DIR}
COPY ./requirements.txt ${FUNCTION_DIR}/requirements.txt
RUN pip install -r ${FUNCTION_DIR}/requirements.txt
COPY . ${FUNCTION_DIR}/
WORKDIR ${FUNCTION_DIR}
EXPOSE 8080
ENTRYPOINT exec gunicorn --timeout 80 --bind 0.0.0.0:8080 wsgi
requirements.txt:
Flask_Cors==3.0.0
python_jose==3.0.1
flask_restplus==0.11.0
Flask_JWT_Extended==3.18.0
Flask==2.0
requests==2.20.0
PyJWT==1.7.1
cryptography==35.0
py-healthcheck==1.9.0
gunicorn==20.0.4
Werkzeug~=2.0.0
jinja2==3.0.3
confluent_kafka==1.7.0
pandas==1.4.2
numpy==1.23.2
pyOpenSSL==22.0.0
kafka-python
$ winpty docker run -it -p 8088:8080 sample-flask-app:0.0.1
[2022-09-09 02:16:25 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2022-09-09 02:16:25 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
[2022-09-09 02:16:25 +0000] [1] [INFO] Using worker: sync
[2022-09-09 02:16:25 +0000] [8] [INFO] Booting worker with pid: 8
sample output
[2022-09-09 02:16:44,672] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2051, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1501, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1499, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1485, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/function/model/api.py", line 21, in home
return modelcode()
File "/function/model/api.py", line 49, in modelcode
producer = SerializingProducer(producer_conf)
File "/usr/local/lib/python3.8/site-packages/confluent_kafka/serializing_producer.py", line 109, in __init__
super(SerializingProducer, self).__init__(conf_copy)
cimpl.KafkaException: KafkaError{code=_INVALID_ARG,val=-186,str="Failed to create producer: No provider for SASL mechanism GSSAPI: recompile librdkafka with libsasl2 or openssl support. Curr
ent build options: PLAIN SASL_SCRAM OAUTHBEARER"}
^C[2022-09-09 02:16:50 +0000] [1] [INFO] Handling signal: int
[2022-09-09 02:16:50 +0000] [8] [INFO] Worker exiting (pid: 8)
[2022-09-09 02:16:50 +0000] [1] [INFO] Shutting down: Master