我已经创建了一个简单的卡夫卡应用程序,发送信息给一个主题。当我在本地环境中运行它时,它工作得很好。但是,当我将它移动到Docker容器时,它无法连接到代理。我认为在容器网络设置中存在问题,但我无法解决。
应用程序代码:
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers='xxxxxxxxxx.mdb.yandexcloud.net:9091',
security_protocol="SASL_SSL",
sasl_mechanism="SCRAM-SHA-512",
sasl_plain_password='xxxxxxxxxx',
sasl_plain_username='xxxxxxxxxx',
ssl_cafile="YandexCA.crt",
api_version=(0,11,5))
producer.send('test_topic', b'test message')
producer.flush()
producer.close()Dockerfile:
# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.10
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /app
COPY . /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "app.py"]所以它在终点站运行得很好,但在码头却失败了。是什么引起的?
发布于 2022-08-23 18:45:48
所以问题就在密码里。有一些人物在逃避,就像:
ENV PASS=xxxxx\6xxxxx当由env设置时,它正确工作,但是当设置在docker文件中时,它被转义了。所以在Dockerfile中,我是这样设置的:
ENV PASS="xxxxx\6xxxxx"一切都开始运作了。
https://stackoverflow.com/questions/73461601
复制相似问题