From 5734fed8798fea787a7660ae5c6ab1c3f8e5883a Mon Sep 17 00:00:00 2001 From: Anatolii Zimovskii Date: Sat, 20 Nov 2021 01:07:46 +0300 Subject: [PATCH] vscode --- Makefile | 9 ++ bin/docker-compose-update | 39 ++++++ linux/advanced/vscode-server/cpp/Dockerfile | 125 ++++++++++++++++++ linux/advanced/vscode-server/cpp/Makefile | 19 +++ .../vscode-server/cpp/docker-compose.yml | 6 + .../advanced/vscode-server/docker/Dockerfile | 68 ++++++++++ linux/advanced/vscode-server/docker/Makefile | 19 +++ .../docker/docker-compose-update | 39 ++++++ .../vscode-server/docker/docker-compose.yml | 6 + .../vscode-server/docker/run-docker.sh | 7 + .../advanced/vscode-server/dotnet/Dockerfile | 86 ++++++++++++ linux/advanced/vscode-server/dotnet/Makefile | 19 +++ .../vscode-server/dotnet/docker-compose.yml | 6 + 13 files changed, 448 insertions(+) create mode 100755 bin/docker-compose-update create mode 100644 linux/advanced/vscode-server/cpp/Dockerfile create mode 100644 linux/advanced/vscode-server/cpp/Makefile create mode 100644 linux/advanced/vscode-server/cpp/docker-compose.yml create mode 100644 linux/advanced/vscode-server/docker/Dockerfile create mode 100644 linux/advanced/vscode-server/docker/Makefile create mode 100755 linux/advanced/vscode-server/docker/docker-compose-update create mode 100644 linux/advanced/vscode-server/docker/docker-compose.yml create mode 100755 linux/advanced/vscode-server/docker/run-docker.sh create mode 100644 linux/advanced/vscode-server/dotnet/Dockerfile create mode 100644 linux/advanced/vscode-server/dotnet/Makefile create mode 100644 linux/advanced/vscode-server/dotnet/docker-compose.yml diff --git a/Makefile b/Makefile index 0e4e27d82..45c727963 100644 --- a/Makefile +++ b/Makefile @@ -167,3 +167,12 @@ ecosystem-images: cd `pwd`/linux/ecosystem/nginx/latest/php && pwd && make cd `pwd`/linux/ecosystem/nginx/latest/rtmp-hls && pwd && make cd `pwd`/linux/ecosystem/nginx/latest/quic && pwd && make + + cd `pwd`/linux/advanced/vscode-server/latest && pwd && make + cd `pwd`/linux/advanced/vscode-server/devops && pwd && make + + cd `pwd`/linux/advanced/vscode-server/amxx && pwd && make + cd `pwd`/linux/advanced/vscode-server/android && pwd && make + cd `pwd`/linux/advanced/vscode-server/cpp && pwd && make + cd `pwd`/linux/advanced/vscode-server/docker && pwd && make + cd `pwd`/linux/advanced/vscode-server/dotnet && pwd && make diff --git a/bin/docker-compose-update b/bin/docker-compose-update new file mode 100755 index 000000000..1a43d1c9b --- /dev/null +++ b/bin/docker-compose-update @@ -0,0 +1,39 @@ +#!/bin/bash + +export DOCKER_COMPOSE_REMOTE_VERSION=`curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r` + +export DOCKER_COMPOSE_LOCAL_VERSION=`docker-compose -v` + +export DOCKER_COMPOSE_BIN=/usr/local/bin/docker-compose + +if [ -f $DOCKER_COMPOSE_BIN ]; then + echo "========================================================================================" + echo "The file '$DOCKER_COMPOSE_BIN' exists." + echo "========================================================================================" + echo "Local Docker Compose version is: ${DOCKER_COMPOSE_LOCAL_VERSION}" + echo "========================================================================================" +else + echo "========================================================================================" + echo "The file '$DOCKER_COMPOSE_BIN' in not found. Installing..." + echo "========================================================================================" +fi + +echo "========================================================================================" +echo "Latest Docker Compose version is: ${DOCKER_COMPOSE_REMOTE_VERSION}" +echo "========================================================================================" + + +echo "========================================================================================" +echo "Installing remote version:" +echo "========================================================================================" +curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_REMOTE_VERSION}/docker-compose-Linux-x86_64 -o $DOCKER_COMPOSE_BIN + +echo "========================================================================================" +echo "Setting up permissions..." +echo "========================================================================================" +chmod +x $DOCKER_COMPOSE_BIN + + +echo "========================================================================================" +echo "Updated Docker Compose version is: ${DOCKER_COMPOSE_LOCAL_VERSION}" +echo "========================================================================================" diff --git a/linux/advanced/vscode-server/cpp/Dockerfile b/linux/advanced/vscode-server/cpp/Dockerfile new file mode 100644 index 000000000..caeddabad --- /dev/null +++ b/linux/advanced/vscode-server/cpp/Dockerfile @@ -0,0 +1,125 @@ +################################################################################ +# 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 +ARG NINJA_ARCH=linux +ARG NINJA_VERSION=latest +ARG NINJA_RELEASE_URL=https://api.github.com/repos/ninja-build/ninja/releases/${NINJA_VERSION} + +################################################################## +# deps +################################################################## +RUN apt-get update && \ + apt install -y --allow-unauthenticated --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 \ + libvpx6 \ + libc6 \ + libgssapi-krb5-2 \ + liblttng-ust0 \ + libssl1.1 \ + libstdc++6 \ + zlib1g \ + tcl + +################################################################## +# Get NINJA binary +################################################################## +RUN curl -s ${NINJA_RELEASE_URL} | jq -r ".assets[] | select(.name | test(\"${NINJA_ARCH}\")) | .browser_download_url" > /tmp/ninja-url.txt && \ + cat /tmp/ninja-url.txt && \ + cd /tmp && \ + wget -q -c --input-file=/tmp/ninja-url.txt && \ + unzip -o /tmp/ninja-linux.zip -d /bin && \ + printf "\n--------------------------------\nninja version: $(ninja --version)\n--------------------------------\n\n" + +################################################################## +# steam runtime and ssdk +################################################################## +RUN cd / && \ + sudo mkdir valve && \ + cd valve && \ + sudo wget http://media.steampowered.com/client/runtime/steam-runtime-sdk_latest.tar.xz && \ + sudo tar xvf steam-runtime-sdk_latest.tar.xz && \ + sudo mv steam-runtime-sdk_2013-09-05 steam-runtime && \ + sudo chown root:root * -R && \ + cd steam-runtime && \ + printf '%s\n' 3 1 Y Y Y | ./setup.sh + +################################################################## +# cleaninig up +################################################################## +RUN apt purge policykit-1 -y && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /tmp/mc.patch && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/7z && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/amxx_base_latest.tar.gz && \ + rm -rfv /tmp/atlassian-plugin-sdk.deb && \ + rm -rfv /tmp/addons diff --git a/linux/advanced/vscode-server/cpp/Makefile b/linux/advanced/vscode-server/cpp/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/advanced/vscode-server/cpp/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/advanced/vscode-server/cpp/docker-compose.yml b/linux/advanced/vscode-server/cpp/docker-compose.yml new file mode 100644 index 000000000..24151f879 --- /dev/null +++ b/linux/advanced/vscode-server/cpp/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/vscode-server:cpp" + build: + context: . diff --git a/linux/advanced/vscode-server/docker/Dockerfile b/linux/advanced/vscode-server/docker/Dockerfile new file mode 100644 index 000000000..cdc3eb807 --- /dev/null +++ b/linux/advanced/vscode-server/docker/Dockerfile @@ -0,0 +1,68 @@ +################################################################################ +# 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 + + +################################################################## +# docker setup +################################################################## + +#Install packages +RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \ + echo 'deb https://download.docker.com/linux/ubuntu focal test' > /etc/apt/sources.list.d/docker.list && \ + apt-cache policy docker-ce && \ + apt-get update && \ + apt-get install -y --no-install-recommends --allow-unauthenticated \ + docker-ce \ + docker-ce-cli \ + containerd.io systemd && \ + systemctl disable docker + +# A better fix for TW-52939 Dockerfile build fails because of aufs +VOLUME /var/lib/docker + +COPY run-docker.sh /services/run-docker.sh +RUN chmod +x /services/run-docker.sh && \ + sync + +################################################################## +# docker compose setup +################################################################## +COPY docker-compose-update /usr/local/bin/docker-compose-update +RUN chmod +x /usr/local/bin/docker-compose-update && \ + sync + +#Try to test +RUN docker-compose-update + +#Install packages +RUN export DOCKER_COMPOSE_VERSION=`curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r` && \ + echo "Latest compose is: ${DOCKER_COMPOSE_VERSION}" && \ + curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose && \ + chmod +x /usr/local/bin/docker-compose && \ + docker-compose -v + +################################################################## +# cleaninig up +################################################################## +RUN apt purge policykit-1 -y && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /tmp/mc.patch && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/7z && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/amxx_base_latest.tar.gz && \ + rm -rfv /tmp/atlassian-plugin-sdk.deb && \ + rm -rfv /tmp/addons diff --git a/linux/advanced/vscode-server/docker/Makefile b/linux/advanced/vscode-server/docker/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/advanced/vscode-server/docker/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/advanced/vscode-server/docker/docker-compose-update b/linux/advanced/vscode-server/docker/docker-compose-update new file mode 100755 index 000000000..1a43d1c9b --- /dev/null +++ b/linux/advanced/vscode-server/docker/docker-compose-update @@ -0,0 +1,39 @@ +#!/bin/bash + +export DOCKER_COMPOSE_REMOTE_VERSION=`curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r` + +export DOCKER_COMPOSE_LOCAL_VERSION=`docker-compose -v` + +export DOCKER_COMPOSE_BIN=/usr/local/bin/docker-compose + +if [ -f $DOCKER_COMPOSE_BIN ]; then + echo "========================================================================================" + echo "The file '$DOCKER_COMPOSE_BIN' exists." + echo "========================================================================================" + echo "Local Docker Compose version is: ${DOCKER_COMPOSE_LOCAL_VERSION}" + echo "========================================================================================" +else + echo "========================================================================================" + echo "The file '$DOCKER_COMPOSE_BIN' in not found. Installing..." + echo "========================================================================================" +fi + +echo "========================================================================================" +echo "Latest Docker Compose version is: ${DOCKER_COMPOSE_REMOTE_VERSION}" +echo "========================================================================================" + + +echo "========================================================================================" +echo "Installing remote version:" +echo "========================================================================================" +curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_REMOTE_VERSION}/docker-compose-Linux-x86_64 -o $DOCKER_COMPOSE_BIN + +echo "========================================================================================" +echo "Setting up permissions..." +echo "========================================================================================" +chmod +x $DOCKER_COMPOSE_BIN + + +echo "========================================================================================" +echo "Updated Docker Compose version is: ${DOCKER_COMPOSE_LOCAL_VERSION}" +echo "========================================================================================" diff --git a/linux/advanced/vscode-server/docker/docker-compose.yml b/linux/advanced/vscode-server/docker/docker-compose.yml new file mode 100644 index 000000000..6657a9679 --- /dev/null +++ b/linux/advanced/vscode-server/docker/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/vscode-server:docker" + build: + context: . diff --git a/linux/advanced/vscode-server/docker/run-docker.sh b/linux/advanced/vscode-server/docker/run-docker.sh new file mode 100755 index 000000000..41b5e68e5 --- /dev/null +++ b/linux/advanced/vscode-server/docker/run-docker.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ "$DOCKER_IN_DOCKER" = "start" ] ; then + rm /var/run/docker.pid 2>/dev/null + service docker start + echo "Docker daemon started" +fi diff --git a/linux/advanced/vscode-server/dotnet/Dockerfile b/linux/advanced/vscode-server/dotnet/Dockerfile new file mode 100644 index 000000000..51639c1ec --- /dev/null +++ b/linux/advanced/vscode-server/dotnet/Dockerfile @@ -0,0 +1,86 @@ +################################################################################ +# 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 + +################################################################## +# dotnet+powershell setup +################################################################## +# Opt out of the telemetry feature +ENV DOTNET_CLI_TELEMETRY_OPTOUT=true +# Disable first time experience +ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true +# Configure Kestrel web server to bind to port 80 when present +ENV ASPNETCORE_URLS=\ +# Enable detection of running in a container +ENV DOTNET_RUNNING_IN_CONTAINER=true +# Enable correct mode for dotnet watch (only mode supported in a container) +ENV DOTNET_USE_POLLING_FILE_WATCHER=true +# Skip extraction of XML docs - generally not useful within an image/container - helps perfomance +ENV NUGET_XMLDOC_MODE=skip +# unofficial support of openssl1.1 instead of 1.0 [https://stackoverflow.com/questions/51901359] +ENV CLR_OPENSSL_VERSION_OVERRIDE=45 +# PowerShell telemetry for docker image usage +ENV POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Ubuntu-20.04 + +#Install packages +RUN curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - && \ + echo 'deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/20.04/prod focal main' > /etc/apt/sources.list.d/microsoft.dotnet.list && \ + apt-get update && \ + apt-get install -y --no-install-recommends --allow-unauthenticated \ + dotnet-sdk-2.1 \ + dotnet-runtime-deps-2.1 \ + dotnet-runtime-2.1 \ + dotnet-hostfxr-2.1 \ + dotnet-sdk-3.1 \ + dotnet-targeting-pack-3.1 \ + dotnet-runtime-deps-3.1 \ + dotnet-runtime-3.1 \ + dotnet-hostfxr-3.1 \ + dotnet-apphost-pack-3.1 \ + dotnet-sdk-5.0 \ + dotnet-targeting-pack-5.0 \ + dotnet-runtime-deps-5.0 \ + dotnet-runtime-5.0 \ + dotnet-hostfxr-5.0 \ + dotnet-apphost-pack-5.0 \ + dotnet-sdk-6.0 \ + dotnet-targeting-pack-6.0 \ + dotnet-runtime-deps-6.0 \ + dotnet-runtime-6.0 \ + dotnet-hostfxr-6.0 \ + dotnet-apphost-pack-6.0 \ + dotnet-host \ + procdump \ + procmon \ + powershell-preview \ + powershell + +# Trigger .NET CLI first run experience by running arbitrary cmd to populate local package cache +RUN dotnet help && \ + pwsh-preview -v && \ + pwsh -v + +################################################################## +# cleaninig up +################################################################## +RUN apt purge policykit-1 -y && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /tmp/mc.patch && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/7z && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/amxx_base_latest.tar.gz && \ + rm -rfv /tmp/atlassian-plugin-sdk.deb && \ + rm -rfv /tmp/addons diff --git a/linux/advanced/vscode-server/dotnet/Makefile b/linux/advanced/vscode-server/dotnet/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/advanced/vscode-server/dotnet/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/advanced/vscode-server/dotnet/docker-compose.yml b/linux/advanced/vscode-server/dotnet/docker-compose.yml new file mode 100644 index 000000000..fec266aff --- /dev/null +++ b/linux/advanced/vscode-server/dotnet/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/vscode-server:dotnet" + build: + context: .