File size: 2,163 Bytes
9dfbc59
 
45f9119
 
 
 
 
 
 
2c5cf84
45f9119
9dfbc59
8a9542e
9dfbc59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8a9542e
54cdee5
 
9dfbc59
 
8a9542e
4f1c174
 
 
 
 
 
 
45f9119
9dfbc59
 
 
 
 
 
 
45f9119
2c5cf84
9dfbc59
2c5cf84
 
9dfbc59
45f9119
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 使用一个包含 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"]