You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中R连接Azure SQL Server时Swagger端点异常排查

问题:Azure Functions定时器触发Docker容器中R连接SQL Server时Swagger端点无法访问

我尝试通过Azure Functions定时器触发Docker容器中的R程序连接Azure SQL Server。本地机器上的R可以正常连接该SQL Server,但本地测试Docker镜像时,预期的定时器触发Swagger端点无法在浏览器打开,即使使用Docker Compose解决了定时器触发的存储需求后仍是如此。

我此前曾用相同方法搭建过自定义定时器触发,实现连接并上传至Blob容器,该实例已成功按指定间隔触发,镜像/容器托管于ACR。

需要明确的问题

  1. 为何本次Swagger API端点无法正常工作?
  2. 这是否与我在Docker容器中访问SQL Server有关?我的R脚本使用odbc包,并传入了所有相关信息(驱动名称、数据库名称、uid、密码等)。
  3. 是否需要在容器中暴露端口?若需要,应暴露哪些端口及原因?

我的最终计划是将容器以与Blob实例相同的方法托管于ACR。此前本地测试类似项目时,最初会因定时器触发需分配存储而报错,但重试后可访问Swagger文档,通过POST请求触发端点运行R代码;但本次完全无法访问文档。

我的Dockerfile内容

FROM mcr.microsoft.com/azure-functions/dotnet:4-appservice 
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

RUN apt-get update && apt-get install -y gnupg
RUN apt-key adv --keyserver keyserver.ubuntu.com \
    --recv-key '95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7'
RUN echo "deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/" > /etc/apt/sources.list.d/backports.list
RUN apt-get update && \
    apt-get install -y \
     libxml2-dev \
     libsodium-dev \
     libsodium23 \
     -t bullseye-cran40 r-base
     
# 安装ODBC驱动相关
RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
RUN curl https://packages.microsoft.com/config/debian/11/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update -y
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev mssql-tools
# R的odbc包需在此之后安装

RUN apt-get install -y --no-install-recommends \
 libcurl4-openssl-dev \
 libssl-dev libxt6 && \
 mkdir -p ~/.local/share/renv && \
 R -e "install.packages('renv', repos='http://cran.rstudio.com/')"

# 拆分复制步骤以加快重建速度
COPY renv.lock /home/site/wwwroot/renv.lock
WORKDIR /home/site/wwwroot
RUN R -e "renv::restore(prompt=FALSE)"
COPY image_timer_predict_trigger/ /home/site/wwwroot/image_timer_predict_trigger
COPY host.json /home/site/wwwroot/host.json
COPY handler.R /home/site/wwwroot/handler.R
COPY handle_this.R /home/site/wwwroot/handle_this.R
COPY run_job.R /home/site/wwwroot/run_job.R

内容的提问来源于stack exchange,提问作者dempseynoel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:37:29