Docker-in-Docker, working sudo, still broken Android SDK, git name and email
This commit is contained in:
18
Dockerfile
18
Dockerfile
@@ -21,7 +21,7 @@ RUN set -x -e; \
|
|||||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null; \
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null; \
|
||||||
# Install packages
|
# Install packages
|
||||||
apt update -y; \
|
apt update -y; \
|
||||||
apt install -y --no-install-recommends --no-install-suggests supervisor openssh-server wget gpg nano git git-lfs chromium nodejs ffmpeg; \
|
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; \
|
git lfs install; \
|
||||||
mkdir /run/sshd /config /config/workspace; \
|
mkdir /run/sshd /config /config/workspace; \
|
||||||
# Install dotnet manually as packaged dotnet does not have all the workloads
|
# Install dotnet manually as packaged dotnet does not have all the workloads
|
||||||
@@ -30,13 +30,14 @@ RUN set -x -e; \
|
|||||||
tar zxf /tmp/dotnet.tar.gz -C /home/code/dotnet; \
|
tar zxf /tmp/dotnet.tar.gz -C /home/code/dotnet; \
|
||||||
echo DOTNET_ROOT=/home/code/dotnet >> /etc/environment; \
|
echo DOTNET_ROOT=/home/code/dotnet >> /etc/environment; \
|
||||||
sed -i -E "s:PATH=\"?([^\"]*)\"?:PATH=/home/code/dotnet\:\1:g" /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
|
# Code Server
|
||||||
codeServerVer=$(wget -q https://update.code.visualstudio.com/api/latest/server-linux-x64-web/stable -O -|grep -oh 'version":"[^"]*'|cut -c 11-); \
|
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; \
|
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; \
|
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; \
|
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; \
|
mkdir /home/code/.vscode-server/extensions; \
|
||||||
for i in eamodio.gitlens ms-vscode.hexeditor icsharpcode.ilspy-vscode patcx.vscode-nuget-gallery jock.svg ms-dotnettools.csdevkit ms-dotnettools.dotnet-maui golang.go ms-python.vscode-pylance ms-mssql.data-workspace-vscode redhat.java james-yu.latex-workshop tomoki1207.pdf; \
|
for i in eamodio.gitlens ms-vscode.hexeditor 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; \
|
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
|
# Code
|
||||||
#wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/4849ca9bdf9666755eb463db297b69e5385090e3/code_1.93.0-1725459079_amd64.deb -O /tmp/code.deb;
|
#wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/4849ca9bdf9666755eb463db297b69e5385090e3/code_1.93.0-1725459079_amd64.deb -O /tmp/code.deb;
|
||||||
@@ -46,9 +47,14 @@ RUN set -x -e; \
|
|||||||
apt install -y zip openjdk-17-jdk-headless; \
|
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; \
|
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_SDK_ROOT=/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; \
|
export PATH=/home/code/sdk/cmdline-tools/bin:$PATH ANDROID_SDK_ROOT=/home/code/sdk; \
|
||||||
yes|sdkmanager --sdk_root=/drone/src/sdk "platform-tools" "build-tools;34.0.0" "platforms;android-34"; \
|
yes|sdkmanager --sdk_root=/home/code/sdk "platform-tools" "build-tools;34.0.0" "platforms;android-34"; \
|
||||||
yes|sdkmanager --sdk_root=/drone/src/sdk --licenses; \
|
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
|
# Clean up
|
||||||
rm /tmp/code.tar.gz /tmp/dotnet.tar.gz /home/code/sdk/commandlinetools.zip; \
|
rm /tmp/code.tar.gz /tmp/dotnet.tar.gz /home/code/sdk/commandlinetools.zip; \
|
||||||
rm -rf /var/lib/apt/lists/* ;\
|
rm -rf /var/lib/apt/lists/* ;\
|
||||||
@@ -64,4 +70,6 @@ VOLUME [ "/home/code/.vscode-server/data/User" ]
|
|||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
|
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
|
||||||
@@ -5,11 +5,15 @@ is_enabled () {
|
|||||||
echo "$1" | grep -q -i -E "^(yes|on|true|1)$"
|
echo "$1" | grep -q -i -E "^(yes|on|true|1)$"
|
||||||
}
|
}
|
||||||
|
|
||||||
CODE_UUID="${BACKUPPC_UUID:-1001}"
|
#CODE_PASSWORD
|
||||||
CODE_GUID="${BACKUPPC_GUID:-1001}"
|
#CODE_PASSWORD_FILE
|
||||||
|
CODE_UUID="${CODE_UUID:-1001}"
|
||||||
|
CODE_GUID="${CODE_GUID:-1001}"
|
||||||
CODE_USERNAME=$(getent passwd "$CODE_UUID" | cut -d: -f1)
|
CODE_USERNAME=$(getent passwd "$CODE_UUID" | cut -d: -f1)
|
||||||
CODE_GROUPNAME=$(getent group "$CODE_GUID" | cut -d: -f1)
|
CODE_GROUPNAME=$(getent group "$CODE_GUID" | cut -d: -f1)
|
||||||
USER_SUDO="${USER_SUDO:-false}"
|
USER_SUDO="${USER_SUDO:-false}"
|
||||||
|
#GIT_NAME
|
||||||
|
#GIT_EMAIL
|
||||||
|
|
||||||
if [ -f /firstrun ]; then
|
if [ -f /firstrun ]; then
|
||||||
echo 'First run of the container. Code will be configured.'
|
echo 'First run of the container. Code will be configured.'
|
||||||
@@ -20,6 +24,14 @@ if [ -f /firstrun ]; then
|
|||||||
cp /usr/share/zoneinfo/$TZ /etc/localtime
|
cp /usr/share/zoneinfo/$TZ /etc/localtime
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Configure GIT
|
||||||
|
if [ "$GIT_NAME" ]; then
|
||||||
|
HOME=/home/code git config --global user.name "$GIT_NAME"
|
||||||
|
fi
|
||||||
|
if [ "$GIT_EMAIL" ]; then
|
||||||
|
HOME=/home/code git config --global user.email "$GIT_EMAIL"
|
||||||
|
fi
|
||||||
|
|
||||||
# Create code user/group if needed
|
# Create code user/group if needed
|
||||||
if [ -z "$CODE_GROUPNAME" ]; then
|
if [ -z "$CODE_GROUPNAME" ]; then
|
||||||
groupadd -r -g "$CODE_GUID" code
|
groupadd -r -g "$CODE_GUID" code
|
||||||
@@ -30,7 +42,7 @@ if [ -f /firstrun ]; then
|
|||||||
echo 'error: both CODE_PASSWORD and CODE_PASSWORD_FILE are set (but are exclusive)\n'
|
echo 'error: both CODE_PASSWORD and CODE_PASSWORD_FILE are set (but are exclusive)\n'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
password=""
|
password=""``
|
||||||
if [ "$CODE_PASSWORD" ]; then
|
if [ "$CODE_PASSWORD" ]; then
|
||||||
password="$CODE_PASSWORD"
|
password="$CODE_PASSWORD"
|
||||||
elif [ "$CODE_PASSWORD_FILE" ]; then
|
elif [ "$CODE_PASSWORD_FILE" ]; then
|
||||||
@@ -38,6 +50,7 @@ if [ -f /firstrun ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
useradd -r -d /home/code -s /bin/bash -g "$CODE_GUID" -u "$CODE_UUID" -M -N code
|
useradd -r -d /home/code -s /bin/bash -g "$CODE_GUID" -u "$CODE_UUID" -M -N code
|
||||||
|
usermod -aG docker code
|
||||||
echo "code:$password" | chpasswd
|
echo "code:$password" | chpasswd
|
||||||
|
|
||||||
CODE_USERNAME="code"
|
CODE_USERNAME="code"
|
||||||
@@ -52,9 +65,9 @@ fi
|
|||||||
|
|
||||||
# Add or remove user from sudo group
|
# Add or remove user from sudo group
|
||||||
if is_enabled "${USER_SUDO}"; then
|
if is_enabled "${USER_SUDO}"; then
|
||||||
groups "${CODE_USERNAME}" | tr " " "\n" | grep -q "^sudo$" || usermod -aG sudo "${CODE_USERNAME}"
|
groups "$CODE_USERNAME" | tr " " "\n" | grep "^sudo$" || usermod -aG sudo "$CODE_USERNAME"
|
||||||
else
|
else
|
||||||
! groups "${CODE_USERNAME}" | tr " " "\n" | grep -q "^sudo$" || gpasswd -d "${CODE_USERNAME}" sudo
|
! groups "$CODE_USERNAME" | tr " " "\n" | grep "^sudo$" || gpasswd -d "$CODE_USERNAME" sudo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export CODE_USERNAME
|
export CODE_USERNAME
|
||||||
|
|||||||
@@ -25,6 +25,12 @@ password = dummy
|
|||||||
[program:ssh]
|
[program:ssh]
|
||||||
command = /usr/sbin/sshd -D
|
command = /usr/sbin/sshd -D
|
||||||
|
|
||||||
|
[program:containerd]
|
||||||
|
command = /usr/bin/containerd
|
||||||
|
|
||||||
|
[program:dockerd]
|
||||||
|
command = /usr/bin/dockerd --containerd=/run/containerd/containerd.sock
|
||||||
|
|
||||||
#[program:code]
|
#[program:code]
|
||||||
#command = /usr/bin/code serve-web --host 0.0.0.0 --port 80
|
#command = /usr/bin/code serve-web --host 0.0.0.0 --port 80
|
||||||
#redirect_stderr = true
|
#redirect_stderr = true
|
||||||
|
|||||||
Reference in New Issue
Block a user