-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathDockerfile
58 lines (52 loc) · 1.94 KB
/
Dockerfile
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
# Adapted from https://github.com/h3rald/litestore/issues/58
FROM alpine:latest
ARG USER=litestore
ENV HOME /home/$USER
RUN apk add --no-cache gcc musl-dev git sudo
# add new user
RUN adduser -D $USER && \
echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER && \
chmod 0440 /etc/sudoers.d/$USER
# install nim and nimble (https://github.com/Docker-Hub-frolvlad/docker-alpine-nim/blob/master/Dockerfile)
RUN export NIM_VERSION=1.4.4 && \
export NIMBLE_VERSION=0.12.0 && \
\
apk add --no-cache libcrypto1.1 libssl1.1 && \
apk add --no-cache --virtual=.build-dependencies wget ca-certificates git && \
mkdir -p "/opt" && \
\
cd "/opt" && \
wget "https://github.com/nim-lang/Nim/archive/v$NIM_VERSION.tar.gz" -O - | tar xz && \
mv "./Nim-$NIM_VERSION" "./Nim" && \
cd "./Nim" && \
wget "https://github.com/nim-lang/csources/archive/master.tar.gz" -O - | tar xz && \
mv "./csources-master" "./csources" && \
cd "./csources" && \
sh build.sh && \
cd .. && \
./bin/nim c koch && \
./koch boot -d:release && \
chmod +x "/opt/Nim/bin/nim" && \
ln -s "/opt/Nim/bin/nim" "/usr/local/bin/nim" && \
rm -r "./csources" "./tests" && \
\
cd "/opt" && \
wget "https://github.com/nim-lang/nimble/archive/v$NIMBLE_VERSION.tar.gz" -O - | tar xz && \
cd "./nimble-$NIMBLE_VERSION" && \
nim compile --run "src/nimble" build --accept && \
rm -rf /tmp/* && \
chmod +x nimble && \
mv nimble "/usr/local/bin/" && \
rm -rf "/opt/nimble-$NIMBLE_VERSION" && \
\
apk del .build-dependencies
# install litestore and dependencies
RUN nimble install --verbose -y nimgen && \
ln -s $HOME/.nimble/bin/nimgen /usr/bin/nimgen && \
nimble install --verbose -y c2nim && \
ln -s $HOME/.nimble/bin/c2nim /usr/bin/c2nim && \
nimble install --verbose -y litestore && \
ln -s $HOME/.nimble/bin/litestore /usr/bin/litestore
USER $USER
WORKDIR $HOME
ENTRYPOINT ["litestore"]