|
| 1 | +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE |
| 2 | +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE |
| 3 | + |
| 4 | +ARG CUDA_MAJOR_MINOR_VERSION='' |
| 5 | +ARG ENV_IN_FILENAME |
| 6 | +ARG ARG_BASED_ENV_IN_FILENAME |
| 7 | + |
| 8 | +ARG NB_USER="sagemaker-user" |
| 9 | +ARG NB_UID=1000 |
| 10 | +ARG NB_GID=100 |
| 11 | + |
| 12 | +USER root |
| 13 | +RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \ |
| 14 | + groupmod "--new-name=${NB_USER}" --non-unique "-g ${NB_GID}" "${MAMBA_USER}" && \ |
| 15 | + # Update the expected value of MAMBA_USER for the |
| 16 | + # _entrypoint.sh consistency check. |
| 17 | + echo "${NB_USER}" > "/etc/arg_mamba_user" && \ |
| 18 | + : |
| 19 | +ENV MAMBA_USER=$NB_USER |
| 20 | + |
| 21 | +RUN apt-get update && \ |
| 22 | + apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git && \ |
| 23 | + # We just install tzdata below but leave default time zone as UTC. This helps packages like Pandas to function correctly. |
| 24 | + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata awscli && \ |
| 25 | + chmod g+w /etc/passwd && \ |
| 26 | + echo "ALL ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \ |
| 27 | + # Note that we do NOT run `rm -rf /var/lib/apt/lists/*` here. If we did, anyone building on top of our images will |
| 28 | + # not be able to run any `apt-get install` commands and that would hamper customizability of the images. |
| 29 | + : |
| 30 | +RUN echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile |
| 31 | + |
| 32 | +USER $MAMBA_USER |
| 33 | +COPY --chown=$MAMBA_USER:$MAMBA_USER *.in /tmp/ |
| 34 | + |
| 35 | +# Make sure that $ENV_IN_FILENAME has a newline at the end before the `tee` command runs. Otherwise, nasty things |
| 36 | +# will happen. |
| 37 | +RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \ |
| 38 | + then echo 'No ARG_BASED_ENV_IN_FILENAME passed' ; \ |
| 39 | + else envsubst < /tmp/$ARG_BASED_ENV_IN_FILENAME | tee --append /tmp/$ENV_IN_FILENAME ; \ |
| 40 | + fi |
| 41 | + |
| 42 | +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION |
| 43 | +RUN micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME && \ |
| 44 | + micromamba clean --all --yes --force-pkgs-dirs && \ |
| 45 | + rm -rf /tmp/*.in |
| 46 | + |
| 47 | +ARG MAMBA_DOCKERFILE_ACTIVATE=1 |
| 48 | +RUN sudo ln -s $(which python3) /usr/bin/python |
| 49 | + |
| 50 | +USER root |
| 51 | +RUN HOME_DIR="/home/${NB_USER}/licenses" \ |
| 52 | + && mkdir -p ${HOME_DIR} \ |
| 53 | + && curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip \ |
| 54 | + && unzip ${HOME_DIR}/oss_compliance.zip -d ${HOME_DIR}/ \ |
| 55 | + && cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance \ |
| 56 | + && chmod +x /usr/local/bin/testOSSCompliance \ |
| 57 | + && chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh \ |
| 58 | + && ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} python \ |
| 59 | + && rm -rf ${HOME_DIR}/oss_compliance* |
| 60 | + |
| 61 | +USER $MAMBA_USER |
| 62 | +ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" |
| 63 | +WORKDIR "/home/${NB_USER}" |
| 64 | +ENV SHELL=/bin/bash |
0 commit comments