# 使用一个包含 R 和 Tidyverse 的基础镜像 # rocker/tidyverse 包含了许多常用包,但仍需确保所有依赖都存在 FROM rocker/tidyverse:latest # 设置工作目录 WORKDIR /app # 复制你的 R 脚本和数据文件到容器中 COPY app.R . COPY gmqrkl.xlsx . # 确保系统包更新和安装必要的开发工具(对于 R 包编译可能需要) RUN apt-get update && apt-get install -y --no-install-recommends \ sudo \ curl \ libxml2-dev \ libssl-dev \ libcurl4-openssl-dev \ libfontconfig1-dev \ libcairo2-dev \ fonts-wqy-zenhei \ gfortran \ libatlas-base-dev \ libopenblas-dev \ liblapack-dev \ pandoc \ pkg-config \ python3 \ python3-pip \ python3-dev \ build-essential \ libpython3-dev \ python3-venv \ python3-wheel \ && rm -rf /var/lib/apt/lists/* # 为 prophet 包安装 Python 依赖 # 使用虚拟环境安装 pystan 和 fbprophet,以避免 'externally-managed-environment' 错误 ENV VIRTUAL_ENV=/opt/venv ENV PATH="$VIRTUAL_ENV/bin:$PATH" RUN python3 -m venv $VIRTUAL_ENV && \ pip install --upgrade pip && \ pip install pystan==2.19.1.1 fbprophet==0.7.1 # 安装所有必需的 R 包 # 分开安装一些可能相互依赖或安装耗时的包,增加稳定性 # 增加 repos URL,并添加 Ncpus 参数以利用多核加速安装 RUN R -e "install.packages(c('zoo', 'forecast', 'tseries', 'uroot', 'readxl', 'lubridate', 'tidyr'), repos='http://cran.rstudio.com/', Ncpus = `nproc`)" RUN R -e "install.packages(c('ggplot2', 'dplyr', 'ggpubr', 'patchwork', 'scales'), repos='http://cran.rstudio.com/', Ncpus = `nproc`)" RUN R -e "install.packages(c('Rcpp', 'RcppArmadillo', 'RcppParallel', 'prophet'), repos='http://cran.rstudio.com/', Ncpus = `nproc`)" RUN R -e "install.packages(c('parallel', 'doParallel'), repos='http://cran.rstudio.com/', Ncpus = `nproc`)" # 设置环境变量,确保 R 知道去哪里找字体 ENV R_LIBS_USER=/usr/local/lib/R/site-library ENV R_GSCMD=/usr/bin/gs # 设置 LANG 环境变量,确保R能正确处理中文字符 ENV LANG=C.UTF-8 # 运行你的 R 脚本 CMD ["Rscript", "app.R"]