forked from tornaria/cocalc-docker
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile-lite
121 lines (100 loc) · 3.53 KB
/
Dockerfile-lite
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
ARG MYAPP_IMAGE=ubuntu:24.04
FROM $MYAPP_IMAGE
MAINTAINER William Stein <wstein@sagemath.com>
USER root
# See https://github.com/sagemathinc/cocalc/issues/921
ENV LC_ALL C.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV TERM screen
# So we can source (see http://goo.gl/oBPi5G)
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# Ubuntu software that are used by CoCalc (latex, pandoc, sage)
RUN \
apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
software-properties-common \
tmux \
flex \
bison \
libreadline-dev \
poppler-utils \
net-tools \
wget \
curl \
git \
python3 \
python-is-python3 \
python3-pip \
make \
g++ \
sudo \
psmisc \
rsync \
tidy \
vim \
inetutils-ping \
lynx \
telnet \
git \
ssh \
m4 \
latexmk \
libpq5 \
libpq-dev \
build-essential \
automake \
jq \
bsdmainutils \
postgresql \
libfuse-dev \
pkg-config \
lz4
# Install node v18.17.1
# CRITICAL: Do *NOT* upgrade nodejs to a newer version until the following is fixed !!!!!!
# https://github.com/sagemathinc/cocalc/issues/6963
# Also, below I got 18.17.1-1nodesource1 by looking at the output of 'apt-cache showpkg nodejs|grep 18.17'
RUN apt-get update \
&& apt-get remove -y nodejs libnode72 nodejs-doc \
&& apt-get install -y ca-certificates curl gnupg \
&& mkdir -p /etc/apt/keyrings \
&& rm -f /etc/apt/keyrings/nodesource.gpg \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& export NODE_MAJOR=18 \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
&& apt-get update && apt-get install nodejs=18.17.1-1nodesource1 -y \
&& apt-mark hold nodejs
RUN echo "umask 077" >> /etc/bash.bashrc
# Build a UTF-8 locale, so that tmux works -- see https://unix.stackexchange.com/questions/277909/updated-my-arch-linux-server-and-now-i-get-tmux-need-utf-8-locale-lc-ctype-bu
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
# Configuration
COPY login.defs /etc/login.defs
COPY login /etc/defaults/login
COPY run.py /root/run.py
COPY bashrc /root/.bashrc
# Create this user, since the startup scripts assumes it exists, and user might install sage later.
RUN adduser --quiet --shell /bin/bash --gecos "Sage user,101,," --disabled-password sage \
&& chown -R sage:sage /home/sage/
# Commit to checkout and build.
ARG BRANCH=master
ARG commit=HEAD
# Pull latest source code for CoCalc and checkout requested commit (or HEAD),
# install our Python libraries globally, then remove cocalc. We only need it
# for installing these Python libraries (TODO: move to pypi?).
RUN \
umask 022 && git clone --depth=1 https://github.com/sagemathinc/cocalc.git \
&& cd /cocalc && git pull && git fetch -u origin $BRANCH:$BRANCH && git checkout ${commit:-HEAD}
RUN umask 022 && pip3 install --upgrade /cocalc/src/smc_pyutil/
# Install pnpm package manager that we now use instead of npm
RUN umask 022 \
&& npm install -g pnpm
# Build cocalc itself.
RUN umask 022 \
&& cd /cocalc/src \
&& npm run make
# And cleanup npm cache, which is several hundred megabytes after building cocalc above.
RUN rm -rf /root/.npm
CMD /root/run.py
ARG BUILD_DATE
LABEL org.label-schema.build-date=$BUILD_DATE
EXPOSE 22 80 443