JuliaForDataAnalysis/.devcontainer/Julia.Dockerfile
2023-08-21 10:27:03 +02:00

65 lines
1.7 KiB
Docker

ARG BUILD_ON_IMAGE=glcr.b-data.ch/julia/base
ARG JULIA_VERSION=latest
FROM ${BUILD_ON_IMAGE}:${JULIA_VERSION} as files
ARG DEBIAN_FRONTEND=noninteractive
RUN mkdir /files
COPY julia-base/conf/user /files
COPY julia-base/scripts /files
## Ensure file modes are correct when using CI
## Otherwise set to 777 in the target image
RUN find /files -type d -exec chmod 755 {} \; \
&& find /files -type f -exec chmod 644 {} \; \
&& find /files/usr/local/bin -type f -exec chmod 755 {} \;
FROM ${BUILD_ON_IMAGE}:${JULIA_VERSION}
ARG DEBIAN_FRONTEND=noninteractive
## Update environment
ARG USE_ZSH_FOR_ROOT
ARG SET_LANG
ARG SET_TZ
ENV LANG=${SET_LANG:-$LANG} \
TZ=${SET_TZ:-$TZ} \
PARENT_IMAGE_BUILD_DATE=${BUILD_DATE}
## Change root's shell to ZSH
RUN if [ -n "$USE_ZSH_FOR_ROOT" ]; then \
chsh -s /bin/zsh; \
fi \
## Update timezone if needed
&& if [ "$TZ" != "Etc/UTC" ]; then \
echo "Setting TZ to $TZ"; \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone; \
fi \
## Add/Update locale if needed
&& if [ "$LANG" != "en_US.UTF-8" ]; then \
sed -i "s/# $LANG/$LANG/g" /etc/locale.gen; \
locale-gen; \
echo "Setting LANG to $LANG"; \
update-locale --reset LANG=$LANG; \
fi \
## Allow updating pre-installed Julia packages
## Make sure $JULIA_PATH/local/share/julia/registries/* is deleted
&& rm -rf "${JULIA_PATH}/local/share/julia/registries"/*
## Pip: Install to the Python user install directory (1) or not (0)
ARG PIP_USER=1
ENV PIP_USER=${PIP_USER}
## Copy files as late as possible to avoid cache busting
COPY --from=files /files /
## Reset environment variable BUILD_DATE
ARG BUILD_START
ENV BUILD_DATE=${BUILD_START}