-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
100 lines (86 loc) · 2.56 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
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
FROM centos:6.9
# Declare build-time environment
# Miniconda
ARG MC_VERSION=4.5.12
ARG MC_PLATFORM=Linux
ARG MC_ARCH=x86_64
ARG MC_URL=https://repo.continuum.io/miniconda
# Conda root
ARG CONDA_VERSION=4.5.12
ARG CONDA_BUILD_VERSION=3.17.3
ARG CONDA_PACKAGES
# Declare environment
ENV OPT=/opt \
HOME=/home/jenkins
ENV PYTHONUNBUFFERED=1 \
MC_VERSION=${MC_VERSION} \
MC_PLATFORM=${MC_PLATFORM} \
MC_ARCH=${MC_ARCH} \
MC_URL=${MC_URL} \
MC_INSTALLER=Miniconda3-${MC_VERSION}-${MC_PLATFORM}-${MC_ARCH}.sh \
MC_PATH=${OPT}/conda \
CONDA_VERSION=${CONDA_VERSION} \
CONDA_BUILD_VERSION=${CONDA_BUILD_VERSION} \
CONDA_PACKAGES=${CONDA_PACKAGES}
# Toolchain
RUN yum update -y && yum install -y \
bzip2-devel \
curl \
gcc \
gcc-c++ \
gcc-gfortran \
git \
glibc-devel.i686 \
glibc-devel \
hg \
java-1.8.0-openjdk-devel \
kernel-devel \
libX11-devel \
mesa-libGL \
mesa-libGLU \
ncurses-devel \
openssh-server \
subversion \
sudo \
wget \
zlib-devel \
&& yum clean all
# SSH Server configuration
# Create 'jenkins' user
# Configure sudoers
RUN sed -i 's|#UseDNS.*|UseDNS no|' /etc/ssh/sshd_config \
&& ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa \
&& ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa \
&& groupadd jenkins \
&& useradd -g jenkins -m -d $HOME -s /bin/bash jenkins \
&& echo "jenkins:jenkins" | chpasswd \
&& echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
# Install Miniconda
# Reset permissions
RUN curl -q -O ${MC_URL}/${MC_INSTALLER} \
&& bash ${MC_INSTALLER} -b -p ${MC_PATH} \
&& rm -rf ${MC_INSTALLER} \
&& echo export PATH="${MC_PATH}/bin:\${PATH}" > /etc/profile.d/conda.sh \
&& chown -R jenkins: ${OPT} ${HOME}
# Configure Conda
ENV PATH "${MC_PATH}/bin:${PATH}"
USER jenkins
RUN conda config --set auto_update_conda false \
&& conda config --set always_yes true \
&& conda config --set quiet true \
&& conda config --set rollback_enabled false \
&& conda install --yes --quiet \
conda=${CONDA_VERSION} \
conda-build=${CONDA_BUILD_VERSION} \
git \
${CONDA_PACKAGES}
# Inject custom handlers
USER root
RUN curl -L https://github.com/krallin/tini/releases/download/v0.18.0/tini-static-amd64 > /usr/bin/tini \
&& chmod +x /usr/bin/tini
ADD with_env /usr/local/bin
ADD spawner.sh /usr/local/bin
WORKDIR ${HOME}
EXPOSE 22
ENTRYPOINT ["tini", "-g", "--", "spawner.sh"]
CMD ["/bin/bash"]