gitlab-build-images/Dockerfile.custom
Stan Hu 9d6dd5061a
Update to Debian bullseye
bullseye is the latest stable, and this is what we will be using for
Cloud Native GitLab going forward so we should test with this.

Since an upgrade of the operating system may break pre-compiled C
extensions, we now introduce a DEBIAN environment flag that defaults
to the legacy buster install but allows us to roll out a bullseye
image with `debian-bullseye` as the image name prefix.
2022-02-09 14:15:39 -08:00

104 lines
3.1 KiB
Docker

#
# The arguments in this file are configured in
# /scripts/custom-docker-build
#
ARG CUSTOM_IMAGE_NAME
ARG CUSTOM_IMAGE_VERSION
FROM ${CUSTOM_IMAGE_NAME}:${CUSTOM_IMAGE_VERSION}
ADD / /
RUN /scripts/install-essentials
ENV PATH $PATH:/usr/local/go/bin
# Ruby
ARG RUBY_VERSION
ARG RUBY_DOWNLOAD_SHA256
RUN if [ -n "$RUBY_VERSION" ]; then /scripts/install-ruby $RUBY_VERSION $RUBY_DOWNLOAD_SHA256 && ruby --version; fi
# Git
ARG GIT_VERSION
ARG GIT_DOWNLOAD_URL
ARG GIT_DOWNLOAD_SHA256
RUN if [ -n "$GIT_VERSION" ]; then /scripts/install-pcre2 && pcre2-config --version; fi
RUN if [ -n "$GIT_VERSION" ]; then /scripts/install-git && git --version; fi
# Chrome
ARG CHROME_VERSION
ARG CHROME_DRIVER_VERSION
RUN if [ -n "$CHROME_VERSION" ]; then /scripts/install-chrome $CHROME_VERSION $CHROME_DRIVER_VERSION && google-chrome --version; fi
# NodeJS and Yarn
ARG NODE_INSTALL_VERSION
ARG YARN_INSTALL_VERSION
RUN if [ -n "$NODE_INSTALL_VERSION" ] ; then /scripts/install-node $NODE_INSTALL_VERSION $YARN_INSTALL_VERSION && node --version && yarn --version; fi
# Golang
ARG INSTALL_GOLANG_VERSION
ARG GOLANG_DOWNLOAD_SHA256
RUN if [ -n "$INSTALL_GOLANG_VERSION" ] ; then /scripts/install-golang "${INSTALL_GOLANG_VERSION}" "${GOLANG_DOWNLOAD_SHA256}" && go version; fi
# Git LFS (https://git-lfs.github.com/)
ARG LFS_VERSION
ARG LFS_DOWNLOAD_URL=https://github.com/git-lfs/git-lfs/releases/download/v${LFS_VERSION}/git-lfs-linux-amd64-v${LFS_VERSION}.tar.gz
ARG LFS_DOWNLOAD_SHA256
RUN if [ -n "$LFS_VERSION" ]; then /scripts/install-lfs && git lfs --version; fi
# Postgres
ARG POSTGRES_VERSION
ARG DEBIAN_VERSION
RUN if [ -n "$POSTGRES_VERSION" ] ; then /scripts/install-postgresql $POSTGRES_VERSION $DEBIAN_VERSION; fi
# GraphicsMagick
ARG GRAPHISMAGICK_VERSION
ARG GRAPHISMAGICK_DOWNLOAD_URL=https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/${GRAPHISMAGICK_VERSION}/GraphicsMagick-${GRAPHISMAGICK_VERSION}.tar.gz
ARG GRAPHISMAGICK_DOWNLOAD_SHA256
RUN if [ -n "$GRAPHISMAGICK_VERSION" ]; then /scripts/install-graphicsmagick && gm version; fi
# Docker
ARG DOCKER_VERSION
ARG DEBIAN_VERSION
RUN if [ -n "$DOCKER_VERSION" ]; then /scripts/install-docker $DOCKER_VERSION $DEBIAN_VERSION; fi
# PgBouncer
ARG PGBOUNCER_VERSION
ARG PGBOUNCER_DOWNLOAD_SHA256
RUN if [ -n "$PGBOUNCER_VERSION" ] ; then /scripts/install-pgbouncer $PGBOUNCER_VERSION $PGBOUNCER_DOWNLOAD_SHA256; fi
# Bazelisk
ARG BAZELISK_VERSION
ARG BAZELISK_DOWNLOAD_SHA256
RUN if [ -n "$BAZELISK_VERSION" ] ; then /scripts/install-bazelisk $BAZELISK_VERSION $BAZELISK_DOWNLOAD_SHA256; fi
RUN locale-gen C.UTF-8
ENV LANG=C.UTF-8 \
LANGUAGE=C \
LC_ALL=C.UTF-8
# Set as env variables all versions configured
ENV RUBY_VERSION=${RUBY_VERSION} \
GIT_VERSION=${GIT_VERSION} \
CHROME_VERSION=${CHROME_VERSION} \
NODE_VERSION=${NODE_INSTALL_VERSION} \
YARN_VERSION=${YARN_INSTALL_VERSION} \
GOLANG_VERSION=${INSTALL_GOLANG_VERSION} \
LFS_VERSION=${LFS_VERSION} \
POSTGRES_VERSION=${POSTGRES_VERSION} \
GRAPHISMAGICK_VERSION=${GRAPHISMAGICK_VERSION} \
DOCKER_VERSION=${DOCKER_VERSION} \
PGBOUNCER_VERSION=${PGBOUNCER_VERSION} \
BAZELISK_VERSION=${BAZELISK_VERSION} \
DEBIAN_VERSION=${DEBIAN_VERSION}