76 lines
5.2 KiB
Docker
76 lines
5.2 KiB
Docker
FROM ubuntu
|
|
|
|
LABEL maintainer="Roman Vanicek <roman.vanicek@ivasoft.cz>"
|
|
|
|
# Produced using curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o nodesource.gpg
|
|
COPY nodesource.gpg /usr/share/keyrings/nodesource.gpg
|
|
|
|
RUN set -x -e; \
|
|
# Install -up-to-date nodejs repo
|
|
apt update -y; \
|
|
apt install -y --no-install-recommends --no-install-suggests apt-transport-https ca-certificates; \
|
|
node_version="20.x"; \
|
|
arch=$(dpkg --print-architecture); \
|
|
chmod 644 /usr/share/keyrings/nodesource.gpg; \
|
|
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null; \
|
|
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null; \
|
|
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null; \
|
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null; \
|
|
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null; \
|
|
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null; \
|
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null; \
|
|
# Install packages
|
|
apt update -y; \
|
|
apt install -y --no-install-recommends --no-install-suggests supervisor openssh-server wget curl sudo gpg nano git git-lfs docker.io chromium nodejs ffmpeg; \
|
|
git lfs install; \
|
|
mkdir /run/sshd /config /config/workspace; \
|
|
# Install dotnet manually as packaged dotnet does not have all the workloads
|
|
mkdir -p /home/code/dotnet; \
|
|
wget -q https://download.visualstudio.microsoft.com/download/pr/4e3b04aa-c015-4e06-a42e-05f9f3c54ed2/74d1bb68e330eea13ecfc47f7cf9aeb7/dotnet-sdk-8.0.404-linux-x64.tar.gz -O /tmp/dotnet.tar.gz; \
|
|
tar zxf /tmp/dotnet.tar.gz -C /home/code/dotnet; \
|
|
echo DOTNET_ROOT=/home/code/dotnet >> /etc/environment; \
|
|
sed -i -E "s:PATH=\"?([^\"]*)\"?:PATH=/home/code/dotnet\:\1:g" /etc/environment; \
|
|
export PATH=/home/code/dotnet:$PATH; DOTNET_ROOT=/home/code/dotnet; \
|
|
# Code Server
|
|
codeServerVer=$(wget -q https://update.code.visualstudio.com/api/latest/server-linux-x64-web/stable -O -|grep -oh 'version":"[^"]*'|cut -c 11-); \
|
|
wget -q https://update.code.visualstudio.com/commit:${codeServerVer}/server-linux-x64/stable -O /tmp/code.tar.gz; \
|
|
mkdir -p /home/code/.vscode-server/cli/servers/Stable-${codeServerVer}/server; \
|
|
tar xzf /tmp/code.tar.gz --directory /home/code/.vscode-server/cli/servers/Stable-${codeServerVer}/server --strip-components=1; \
|
|
mkdir /home/code/.vscode-server/extensions; \
|
|
for i in eamodio.gitlens ms-vscode.hexeditor mutantdino.resourcemonitor icsharpcode.ilspy-vscode patcx.vscode-nuget-gallery jock.svg ms-dotnettools.csdevkit ms-dotnettools.dotnet-maui golang.go ms-python.vscode-pylance ms-vscode-remote.remote-containers ms-mssql.data-workspace-vscode redhat.java james-yu.latex-workshop tomoki1207.pdf; \
|
|
do /home/code/.vscode-server/cli/servers/Stable-${codeServerVer}/server/bin/code-server --extensions-dir /home/code/.vscode-server/extensions --install-extension $i; done; \
|
|
# Code
|
|
#wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/4849ca9bdf9666755eb463db297b69e5385090e3/code_1.93.0-1725459079_amd64.deb -O /tmp/code.deb;
|
|
#apt install -y /tmp/code.deb; \
|
|
# Android SDK
|
|
mkdir -p /home/code/sdk; \
|
|
apt install -y zip openjdk-17-jdk-headless; \
|
|
wget -q https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip -O /home/code/sdk/commandlinetools.zip && unzip -q /home/code/sdk/commandlinetools.zip -d /home/code/sdk; \
|
|
echo ANDROID_SDK_ROOT=/home/code/sdk >> /etc/environment; \
|
|
echo ANDROID_HOME=/home/code/sdk >> /etc/environment; \
|
|
sed -i -E "s:PATH=\"?([^\"]*)\"?:PATH=/home/code/sdk/cmdline-tools/bin\:\1:g" /etc/environment; \
|
|
export PATH=/home/code/sdk/cmdline-tools/bin:$PATH ANDROID_SDK_ROOT=/home/code/sdk; \
|
|
yes|sdkmanager --sdk_root=/home/code/sdk "platform-tools" "build-tools;34.0.0" "platforms;android-34"; \
|
|
yes|sdkmanager --sdk_root=/home/code/sdk --licenses; \
|
|
# Credential provider
|
|
wget -qO- https://aka.ms/install-artifacts-credprovider.sh | HOME=/home/code bash; \
|
|
HOME=/home/code dotnet nuget add source https://git.ivasoft.cz/api/packages/Ivasoft/nuget/index.json --name Ivasoft; \
|
|
HOME=/home/code dotnet nuget add source https://git.exprojekt.cz/api/packages/EXprojekt/nuget/index.json --name EXprojekt; \
|
|
# Clean up
|
|
rm /tmp/code.tar.gz /tmp/dotnet.tar.gz /home/code/sdk/commandlinetools.zip; \
|
|
rm -rf /var/lib/apt/lists/* ;\
|
|
# Mark the docker as not run yet, to allow entrypoint to do its stuff
|
|
touch /firstrun
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
COPY supervisord.conf /etc/supervisord.conf
|
|
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
VOLUME [ "/home/code/.vscode-server/data/User" ]
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
|
|
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
|
|
|
|
# ocker create --name code --privileged --network host -v /home/rv@doma.lan/temp/codeUser:/home/code/.vscode-server/data/User -v /home/rv@doma.lan/temp/codeWork:/home/code/workspace -e USER_SUDO=1 -e CODE_PASSWORD=a -e GIT_NAME="Roman Vanicek" -e GIT_EMAIL="roman.vanicek@ivasoft.cz" code |