docker-scripts/linux/advanced/vscode-server/cpp/Dockerfile
2024-08-25 21:24:42 +03:00

239 lines
8.1 KiB
Docker

################################################################################
# https://github.com/linuxserver/docker-code-server/pkgs/container/code-server
################################################################################
FROM epicmorg/vscode-server:latest
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
ARG DEBIAN_FRONTEND=noninteractive
##################################################################
# ARGuments
##################################################################
ENV BuildDocker true
# steam runtime sdk
ENV STEAM_RUNTIME_SDK_DIR=${EMG_LOCAL_BASE_DIR}/valve/steam/runtime-sdk/latest
ARG STEAM_RUNTIME_SDK_BIN_DIR=${STEAM_RUNTIME_SDK_DIR}/bin
ARG STEAM_RUNTIME_SDK_URL=http://media.steampowered.com/client/runtime/steam-runtime-sdk_latest.tar.xz
ARG STEAM_RUNTIME_SDK_TEMP=/tmp/steam-runtime-sdk_latest.tar.xz
# cmake compiller
ENV CMAKE_VERSION=3.30.2
ENV CMAKE_DIR=${EMG_LOCAL_BASE_DIR}/cmake/${CMAKE_VERSION}
ARG CMAKE_BIN_DIR=${CMAKE_DIR}/bin
ARG CMAKE_DOWNLOAD_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz
ARG CMAKE_TEMP=/tmp/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz
# flutter source tarball
ENV FLUTTER_VERSION=3.22.3
ENV FLUTTER_CHANNEL=stable
ENV FLUTTER_DIR=${EMG_LOCAL_BASE_DIR}/flutter/${FLUTTER_VERSION}
ARG FLUTTER_BIN_DIR=${FLUTTER_DIR}/bin
ARG FLUTTER_DOWNLOAD_URL=https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz
ARG FLUTTER_TEMP=/tmp/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz
# ninja source tarball
ENV NINJA_VERSION=1.12.1
ENV NINJA_DIR=${EMG_LOCAL_BASE_DIR}/ninja/${NINJA_VERSION}
ARG NINJA_BIN_DIR=${NINJA_DIR}/bin
ARG NINJA_DOWNLOAD_URL=https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip
ARG NINJA_TEMP=/tmp/ninja-linux.zip
# GO source tarball
ENV GO_VERSION=1.22.5
ENV GO_DIR=${EMG_LOCAL_BASE_DIR}/go/${GO_VERSION}
ARG GO_BIN_DIR=${GO_DIR}/bin
ARG GO_DOWNLOAD_URL=https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
ARG GO_TEMP=/tmp/go${GO_VERSION}.linux-amd64.tar.gz
##################################################################
# Rust compillers
##################################################################
ENV CARGO_HOME=${EMG_LOCAL_BASE_DIR}/cargo
ENV RUSTUP_HOME=${EMG_LOCAL_BASE_DIR}/rustup
ARG CARGO_BIN=${CARGO_HOME}/bin
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile complete --default-toolchain stable --verbose
ENV PATH="$CARGO_HOME/bin:${PATH}"
RUN echo "=============================================" && \
echo cargo $(cargo --version) && \
echo rustc $(rustc --version) && \
echo rustup $(rustup --version) && \
echo "============================================="
##################################################################
# CMake
##################################################################
RUN mkdir -p ${CMAKE_DIR}
ADD ${CMAKE_DOWNLOAD_URL} /tmp
RUN tar -xf ${CMAKE_TEMP} --directory ${CMAKE_DIR} --strip-components=1 && \
chmod +x ${CMAKE_BIN_DIR}/ccmake && \
chmod +x ${CMAKE_BIN_DIR}/cmake && \
chmod +x ${CMAKE_BIN_DIR}/cmake-gui && \
chmod +x ${CMAKE_BIN_DIR}/cpack && \
chmod +x ${CMAKE_BIN_DIR}/ctest
ENV PATH="${CMAKE_BIN_DIR}:${PATH}"
RUN echo "=============================================" && \
echo $(cmake --version) && \
echo "============================================="
##################################################################
# steam runtime and ssdk
##################################################################
RUN mkdir -p ${STEAM_RUNTIME_SDK_DIR}
ADD ${STEAM_RUNTIME_SDK_URL} /tmp
RUN tar -xf ${STEAM_RUNTIME_SDK_TEMP} --directory ${STEAM_RUNTIME_SDK_DIR} --strip-components=1 && \
tree ${STEAM_RUNTIME_SDK_DIR} && \
chmod +x ${STEAM_RUNTIME_SDK_BIN_DIR} -R && \
chmod +x ${STEAM_RUNTIME_SDK_DIR}/setup.sh && \
chmod +x ${STEAM_RUNTIME_SDK_DIR}/shell.sh && \
chmod +x ${STEAM_RUNTIME_SDK_DIR}/shell-amd64.sh && \
chmod +x ${STEAM_RUNTIME_SDK_DIR}/shell-i386.sh
# printf '%s\n' 3 1 Y Y Y | ./setup.sh
##################################################################
# Flutter SDK
##################################################################
RUN mkdir -p ${FLUTTER_DIR}
ADD ${FLUTTER_DOWNLOAD_URL} /tmp
RUN tar -xf ${FLUTTER_TEMP} --directory ${FLUTTER_DIR} --strip-components=1 && \
chmod +x ${FLUTTER_BIN_DIR}/dart && \
chmod +x ${FLUTTER_BIN_DIR}/flutter && \
chmod +x ${FLUTTER_BIN_DIR}/internal/shared.sh && \
chmod +x ${FLUTTER_BIN_DIR}/internal/update_dart_sdk.sh
ENV PATH="${FLUTTER_BIN_DIR}:${PATH}"
RUN git config --global --add safe.directory ${FLUTTER_DIR} && \
flutter precache && \
flutter config --no-analytics && \
dart --disable-analytics
RUN echo "=============================================" && \
echo dart $(dart --version) && \
echo flutter $(flutter --version) && \
echo "============================================="
##################################################################
# GO compillers
##################################################################
RUN mkdir -p ${GO_DIR}
ADD ${GO_DOWNLOAD_URL} /tmp
RUN tar -xzf ${GO_TEMP} --directory ${GO_DIR} --strip-components=1 && \
chmod +x ${GO_BIN_DIR}/go && \
chmod +x ${GO_BIN_DIR}/gofmt
ENV GOPATH=${GO_DIR}
ENV PATH="${GO_BIN_DIR}:${PATH}"
RUN echo "=============================================" && \
echo go $(go version) && \
echo "============================================="
##################################################################
# Get NINJA binary
##################################################################
RUN mkdir -p ${NINJA_BIN_DIR}
ADD ${NINJA_DOWNLOAD_URL} /tmp
RUN 7zz x ${NINJA_TEMP} -o${NINJA_BIN_DIR} -y && \
chmod +x ${NINJA_BIN_DIR}/ninja
ENV PATH="${NINJA_BIN_DIR}:${PATH}"
RUN echo "=============================================" && \
echo ninja $(ninja --version) && \
echo "============================================="
##################################################################
# deps
##################################################################
RUN apt-get update && \
apt-get install -y --allow-unauthenticated --no-install-recommends --no-install-suggests --allow-downgrades \
build-essential \
autoconf-archive \
gnu-standards \
cmake \
libunwind-dev \
golang \
at \
autopkgtest \
gcc-multilib \
g++-multilib \
libxkbcommon-dev \
zlib1g-dev \
libfreetype6-dev \
libegl1-mesa-dev \
libgles2-mesa-dev \
libgbm-dev \
uuid-dev \
nvidia-cg-toolkit \
nvidia-cg-dev \
libavcodec-dev \
libsdl2-dev \
libsdl-image1.2-dev \
libxml2-dev \
yasm \
devscripts \
automake \
libtool \
autotools-dev \
dpkg-dev \
fakeroot \
checkinstall \
dh-make \
zlib1g \
zlib1g-dev \
libssl-dev \
libxslt-dev \
libgd-dev \
libpcre3-dev \
libgeoip-dev \
libkrb5-dev \
libperl-dev \
krb5-user \
luajit \
liblua5.1-0-dev \
libmaxminddb-dev \
libpam0g-dev \
libldap2-dev \
libavformat-dev \
libavfilter-dev \
libswscale-dev \
libavcodec-dev \
libz-dev \
libhiredis-dev \
libzip-dev \
libcrypto++-dev \
libbz2-dev \
libvpx-dev \
libc6 \
libgssapi-krb5-2 \
libstdc++6 \
zlib1g \
tcl
##################################################################
# other customisations
##################################################################
##################################################################
# cleanup
##################################################################
RUN echo "clean up" && \
apt-get clean -y && \
apt-get autoclean -y && \
rm -rfv /var/lib/apt/lists/* && \
rm -rfv /tmp/* && \
rm -rfv /var/cache/apt/archives/*.deb
RUN updatedb