-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile.sciplat-lab
109 lines (72 loc) · 2.48 KB
/
Dockerfile.sciplat-lab
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
ARG input
FROM $input AS base-image
USER 0:0
SHELL ["/bin/bash", "-lc"]
RUN mkdir -p /tmp/build
WORKDIR /tmp/build
# Add other system-level files
# An /etc/passwd
COPY scripts/make-root-user /tmp/build
RUN ./make-root-user
# /etc/profile.d parts
RUN mkdir -p /etc/profile.d
COPY profile.d/local06-showrspnotice.sh profile.d/local07-setupstack.sh \
/etc/profile.d/
# /etc/skel
RUN for i in notebooks WORK DATA; do mkdir -p /etc/skel/${i}; done
COPY skel/gitconfig /etc/skel/.gitconfig
COPY skel/git-credentials /etc/skel/.git-credentials
COPY skel/user_setups /etc/skel/notebooks/.user_setups
COPY runtime/lsst_kernel.json \
/usr/local/share/jupyter/kernels/lsst/kernel.json
COPY etc/rsp_notice /usr/local/etc
FROM base-image AS user-image
# Add our user again (base image removes /etc/passwd)
COPY scripts/make-user /tmp/build
RUN ./make-user
USER lsst_local:lsst_local
# Add the DM stack.
FROM user-image AS base-stack-image
ARG tag
COPY scripts/install-dm-stack /tmp/build
RUN ./install-dm-stack $tag
COPY --chown=lsst_local:lsst_local etc/rsp_notice etc/20-logging.py \
/usr/local/share/jupyterlab/etc/
COPY --chown=lsst_local:lsst_local runtime/lsst_kernel.json \
runtime/lsstlaunch.bash /usr/local/share/jupyterlab/
COPY scripts/install-rsp-user /tmp/build
RUN ./install-rsp-user
FROM base-stack-image AS notebooks-rsp-image
# Check out notebooks-at-build-time
COPY scripts/install-notebooks /tmp/build
RUN ./install-notebooks
FROM notebooks-rsp-image AS compat-rsp-image
# Add compatibility layer to allow for transition from old to new
# paths.
COPY scripts/install-compat /tmp/build
RUN ./install-compat
FROM compat-rsp-image AS manifests-rsp-image
# Get our manifests. This has always been really useful for debugging
# "what broke this week?"
COPY scripts/generate-versions /tmp/build
RUN ./generate-versions
FROM manifests-rsp-image AS rsp-image
ARG version
# Clean up.
# This needs to be numeric, since we will remove /etc/passwd and friends
# while we're running.
USER 0:0
WORKDIR /
COPY scripts/cleanup-files /
RUN ./cleanup-files
RUN rm ./cleanup-files
# Back to unprivileged
USER 1000:1000
WORKDIR /tmp
CMD ["/usr/local/share/jupyterlab/runlab"]
# Overwrite Stack Container definitions with more-accurate-for-us ones
ENV DESCRIPTION="Rubin Science Platform Notebook Aspect"
ENV SUMMARY="Rubin Science Platform Notebook Aspect"
LABEL description="Rubin Science Platform Notebook Aspect: $version" \
name="sciplat-lab:$version" \
version="$version"