This repository was archived by the owner on Aug 31, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.ray-base
More file actions
148 lines (119 loc) · 4.82 KB
/
Dockerfile.ray-base
File metadata and controls
148 lines (119 loc) · 4.82 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
FROM ubuntu:focal as base
ENV TZ=Europe/Berlin
ENV DEBIAN_FRONTEND=noninteractive
######################################################################
## build the system libraries needed to run Ray
FROM base as base-deps
ARG CONDA_URL
ARG K8S
ARG PY_VERS
RUN set -eux; \
apt-get update ; \
apt-get upgrade -y ; \
apt-get install -y --no-install-recommends \
tzdata \
sudo git wget cmake g++ zlib1g-dev \
tmux screen rsync openssh-client gnupg \
libsasl2-modules-sql \
; \
rm -rf /var/lib/apt/lists/* ; \
apt-get clean
# create a non-sudo user
ENV HOME=/home/ray
ENV RAY_UID=1000
ENV RAY_GID=100
RUN set -eux; \
useradd -ms /bin/bash -d $HOME ray --uid $RAY_UID --gid $RAY_GID ; \
usermod -aG sudo ray ; \
echo 'ray ALL=NOPASSWD: ALL' >> /etc/sudoers
USER $RAY_UID
# install miniconda
ENV CONDA_DIR $HOME/anaconda3
RUN set -eux; \
wget --no-check-certificate $CONDA_URL -O /tmp/miniconda.sh ; \
/bin/bash /tmp/miniconda.sh -b -p $CONDA_DIR
# add to path so we can use `conda activate`
ENV PATH=$CONDA_DIR/bin:$PATH
RUN set -eux; \
$CONDA_DIR/bin/conda init ; \
echo 'export PATH=$CONDA_DIR/bin:$PATH' >> $HOME/.bashrc ; \
rm /tmp/miniconda.sh
# blist is needed for NumPy (which gets re-installed when Ray is installed)
RUN set -eux; \
$CONDA_DIR/bin/conda install -y libgcc python=$PY_VERS ; \
$CONDA_DIR/bin/conda clean -y --all ; \
$CONDA_DIR/bin/pip install --no-cache-dir \
"blist" \
"cython==0.29.23" \
"flatbuffers" \
"numpy>=1.20" \
"psutil"
# this helps avoid the following error on Jenkins:
# AttributeError: 'numpy.ufunc' object has no attribute '__module__'
# only install cmake temporarily for blist, psutil
# keep g++ on GPU images, since uninstalling removes CUDA Devel tooling
RUN set -eux; \
$CONDA_DIR/bin/pip uninstall -y dask ; \
sudo apt-get autoremove -y \
cmake zlib1g-dev g++
# install kubectl
RUN set -eux; \
wget --no-check-certificate "https://dl.k8s.io/release/$K8S/bin/linux/amd64/kubectl" -O /tmp/kubectl ; \
wget --no-check-certificate "https://dl.k8s.io/$K8S/bin/linux/amd64/kubectl.sha256" -O /tmp/kubectl.sha256 ; \
echo "$(cat /tmp/kubectl.sha256) /tmp/kubectl" | sha256sum --check ; \
sudo mv /tmp/kubectl /usr/local/bin/kubectl ; \
sudo chown $(whoami) /usr/local/bin/kubectl ; \
sudo chgrp $RAY_GID /usr/local/bin/kubectl ; \
sudo chmod 0755 /usr/local/bin/kubectl ; \
rm /tmp/kubectl.sha256
######################################################################
## install Python libraries needed to run Ray on Kubernetes
FROM base-deps as ray-deps
ARG WHEEL
USER $RAY_UID
WORKDIR $HOME
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
COPY $WHEEL /tmp/$WHEEL
RUN set -eux; \
$CONDA_DIR/bin/pip --no-cache-dir install --find-links /tmp/$WHEEL \
/tmp/$WHEEL[all] \
"six==1.13.0" \
"boto3==1.4.8" \
"google-api-python-client==1.7.8" \
"google-oauth" \
"kubernetes" \
"azure-cli-core==2.22.0" \
"azure-mgmt-compute==14.0.0" \
"azure-mgmt-msi==1.0.0" \
"azure-mgmt-network==10.2.0" \
"azure-mgmt-resource==13.0.0" \
"kopf" \
; \
$CONDA_DIR/bin/pip uninstall ray -y
######################################################################
## build Ray
##
## NB: this layer looks silly, though we're in no position to judge -
## Much of what comes out of Anyscale looks convoluted, though
## discussion of their approaches is rare.
FROM ray-deps as ray-base
ARG WHEEL
USER $RAY_UID
WORKDIR $HOME
RUN set -eux; \
$CONDA_DIR/bin/pip --no-cache-dir install --find-links /tmp/$WHEEL \
/tmp/$WHEEL[all] ; \
sudo rm /tmp/$WHEEL
# remove Python packages flagged as security vulnerabilities
RUN set -eux; \
rm -rf $CONDA_DIR/pkgs/conda-4.11.0-py39h06a4308_0/info/test/tests/data/env_metadata/envpy27osx/lib/python2.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.11.0-py39h06a4308_0/info/test/tests/data/env_metadata/envpy27win_whl/Lib/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.11.0-py39h06a4308_0/info/test/tests/data/env_metadata/envpy37osx_whl/lib/python3.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.11.0-py39h06a4308_0/info/test/tests/data/env_metadata/py27-osx-no-binary/lib/python2.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.11.0-py39h06a4308_0/info/test/tests/data/env_metadata/py36-osx-whl/lib/python3.6/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/envpy27osx/lib/python2.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/envpy27win_whl/Lib/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/envpy37osx_whl/lib/python3.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/py27-osx-no-binary/lib/python2.7/site-packages/ \
rm -rf $CONDA_DIR/pkgs/conda-4.12.0-py38h06a4308_0/info/test/tests/data/env_metadata/py36-osx-whl/lib/python3.6/site-packages/ \