【发布时间】:2021-05-10 19:19:19
【问题描述】:
我正在尝试将 Datadog APM 跟踪和日志收集集成到在 Docker 上运行的 python 应用程序。 在 Dockerfile 中,我需要激活 conda 虚拟环境并导出一个环境 DD_AGENT_HOST。
FROM continuumio/miniconda3
WORKDIR /app
COPY src ./src
COPY application.yaml .
COPY wsgi.py .
COPY gunicorn.conf.py .
COPY logging.ini .
RUN conda env create -f application.yaml
SHELL ["conda", "run", "-n", "dd_venv", "/bin/bash", "-c"]
ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "dd_venv", "ddtrace-run", "gunicorn", "-c", "gunicorn.conf.py", "wsgi:app", "--preload"]
我可以使用上面的 Dockerfile 运行应用程序。但是,需要导出环境 DD_AGENT_HOST 以便应用程序连接 Datadog,并且必须通过 HTTP 请求检索 DD_AGENT_HOST 的值。
ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "dd_venv", "export DD_AGENT_HOST=$(wget <ip_ddress>)", "ddtrace-run", "gunicorn", "-c", "gunicorn.conf.py", "wsgi:app", "--preload"]
我尝试将导出命令添加到上面的 ENTRYPOINT,这导致 Docker 运行失败并出现错误 "export DD_AGENT_HOST=: command not found:.
完成此任务的正确方法是什么?
【问题讨论】:
-
你试过
"DD_AGENT_HOST=$(wget <ip_address>)",没有导出吗? -
@merv 感谢您的帮助。我能够以不同的方式解决它。请参考下面我的回答。
标签: python docker conda gunicorn datadog