-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.rocker
More file actions
103 lines (82 loc) · 3.13 KB
/
Dockerfile.rocker
File metadata and controls
103 lines (82 loc) · 3.13 KB
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
ARG BASE_IMAGE_TAG
FROM node:22-alpine3.19
# Install necessary dependencies (curl and ca-certificates)
RUN apk add --no-cache curl ca-certificates && \
curl -fsSLk -o /usr/local/share/ca-certificates/nrel_root.crt https://raw.github.nrel.gov/TADA/nrel-certs/v20180329/certs/nrel_root.pem && \
curl -fsSLk -o /usr/local/share/ca-certificates/nrel_xca1.crt https://raw.github.nrel.gov/TADA/nrel-certs/v20180329/certs/nrel_xca1.pem && \
update-ca-certificates
FROM rocker/r-ver:${BASE_IMAGE_TAG:-4.4.3}
RUN mkdir /usr/src/app
# Copy the installed SSL certs from the node stage
COPY --from=node /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=node /usr/share/ca-certificates /usr/share/ca-certificates
COPY --from=node /usr/local/share/ca-certificates /usr/local/share/ca-certificates
# Install system dependencies and required tools
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
libbz2-dev \
libcurl4-openssl-dev \
libfreetype6-dev \
libjpeg-dev \
libffi-dev \
libfontconfig1-dev \
libfribidi-dev \
libgit2-dev \
libharfbuzz-dev \
liblzma-dev \
libncurses5-dev \
libpng-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libtiff5-dev \
libv8-dev \
libxml2-dev \
libxmlsec1-dev \
libxslt1-dev \
llvm \
tk-dev \
wget \
xz-utils \
zlib1g-dev && \
rm -rf /var/lib/apt/lists/*
# use bash, not sh
SHELL ["/bin/bash", "-c"]
# Copy over the install packages script
COPY ./install_r_packages.R /tmp/install_r_packages.R
# Run the R package install script
RUN Rscript /tmp/install_r_packages.R \
&& rm -f /tmp/install_r_packages.R \
&& strip /usr/local/lib/R/site-library/*/libs/*.so
# Install pyenv and Python
ENV PYTHON_VERSION=3.10.6
ENV PYENV_ROOT="/root/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
RUN git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT && \
$PYENV_ROOT/bin/pyenv install $PYTHON_VERSION && \
$PYENV_ROOT/bin/pyenv global $PYTHON_VERSION
# Update shell configuration for pyenv in Docker environment
RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> /root/.bashrc \
&& echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /root/.bashrc \
&& echo 'eval "$(pyenv init --path)"' >> /root/.bashrc \
&& echo 'eval "$(pyenv init -)"' >> /root/.bashrc
# Install pip 24.2 for Python
RUN bash -c "source /root/.bashrc && python3 -m ensurepip --upgrade && python3 -m pip install --upgrade pip"
COPY ./requirements.txt /usr/src/app/requirements.txt
WORKDIR /usr/src/app
# Install required Python packages
RUN bash -c "source /root/.bashrc && python3 -m pip install \
--no-cache-dir -r requirements.txt"
RUN mkdir -p /usr/src/schematron && \
wget -O '/usr/src/schematron/bsyncr_schematron.sch' 'https://raw.githubusercontent.com/BuildingSync/bsyncr/develop/bsyncr_schematron.sch'
# set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV FLASK_APP=/usr/src/app/bsyncr_server/main.py
COPY . /usr/src/app/
EXPOSE 5000
CMD ["python3", "manage.py", "run", "-h", "0.0.0.0"]