Sort of working version of the docker file stuff

This commit is contained in:
Bradley Bickford 2024-05-31 21:28:25 -04:00
parent c5f639f772
commit 472f9f3a68
4 changed files with 78 additions and 6 deletions

75
Dockerfile Normal file
View File

@ -0,0 +1,75 @@
# syntax=docker/dockerfile:experimental
FROM fedora:39
RUN dnf update -y && dnf install -y \
curl \
git \
git-lfs \
htop \
vim \
nano \
dumb-init \
tar \
bzip2 \
unzip \
&& rm -rf /var/cache/dnf \
&& git lfs install \
&& curl -fsSL https://code-server.dev/install.sh | sh
RUN useradd -u 1000 coder && echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
RUN ARCH="$(uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g')" \
&& curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gz" | tar -C /usr/local/bin -xzf - \
&& chown root:root /usr/local/bin/fixuid \
&& chmod 4755 /usr/local/bin/fixuid \
&& mkdir -p /etc/fixuid \
&& printf "user: coder\ngroup: coder\n" > /etc/fixuid/config.yml
COPY code-server.tar.gz /tmp
COPY settings.json /tmp
COPY config.yaml /tmp
COPY project-creator.py /tmp
ARG WPILIB_DL_URL
ARG WPILIB_FILE_NAME=wpilib.tar.gz
RUN curl -fsSL ${WPILIB_DL_URL} -o /tmp/${WPILIB_FILE_NAME} \
&& tar -xzf "/tmp/${WPILIB_FILE_NAME}" -C /tmp \
&& WPILIB_ARTIFACTS="$(find /tmp -type f -name 'WPILib_Linux-*-artifacts.tar.gz' -print)" \
&& ARTIFACTSYEAR="$(echo $WPILIB_ARTIFACTS | cut -d '-' -f 2 | cut -d '.' -f 1)" \
&& mkdir -p /home/coder/wpilib/$ARTIFACTSYEAR \
&& tar -xzf "$WPILIB_ARTIFACTS" -C /home/coder/wpilib/$ARTIFACTSYEAR \
&& chown -R coder:coder /home/coder/wpilib \
&& rm -f /tmp/${WPILIB_FILE_NAME} \
&& rm -rf "$(find /tmp -type d -name 'WPILib_Linux-*' -print)" \
&& GRADLEZIP="$(ls /home/coder/wpilib/$ARTIFACTSYEAR/installUtils | grep 'gradle-.*-bin.zip')" \
&& GRADLEFOLDER="/home/coder/gradle-$(echo \"$GRADLEZIP\" | cut -d '-' -f 2)" \
&& unzip /home/coder/wpilib/$ARTIFACTSYEAR/installUtils/$GRADLEZIP -d /home/coder/ \
&& chown -R coder:coder $GRADLEFOLDER \
&& mkdir /home/coder/.bashrc.d \
&& touch /home/coder/.bashrc.d/wpilib.sh \
&& chown -R coder:coder /home/coder/.bashrc.d \
&& echo "export JAVA_HOME=/home/coder/wpilib/$ARTIFACTSYEAR/jdk" >> "/home/coder/.bashrc.d/wpilib.sh" \
&& echo "export PATH=$PATH:/home/coder/wpilib/$ARTIFACTSYEAR/jdk/bin" >> "/home/coder/.bashrc.d/wpilib.sh" \
&& echo "export PATH=$PATH:$GRADLEFOLDER/bin" >> "/home/coder/.bashrc.d/wpilib.sh" \
&& source /home/coder/.bashrc.d/wpilib.sh \
&& su -c "/home/coder/wpilib/$ARTIFACTSYEAR/jdk/bin/java -jar /home/coder/wpilib/$ARTIFACTSYEAR/tools/ToolsUpdater.jar" "coder" \
&& su -c "/home/coder/wpilib/$ARTIFACTSYEAR/jdk/bin/java -jar /home/coder/wpilib/$ARTIFACTSYEAR/maven/MavenMetaDataFixer.jar" "coder" \
&& su -c "mkdir -p /home/coder/.local/share" "coder" \
&& su -c "mkdir -p /home/coder/.config/code-server" "coder" \
&& su -c "tar -xzf /tmp/code-server.tar.gz -C /home/coder/.local/share" "coder" \
&& su -c "cp -f /tmp/settings.json /home/coder/.local/share/code-server/User" "coder" \
&& su -c "cp -f /tmp/config.yaml /home/coder/.config/code-server" "coder" \
&& NEW_PASS="$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 20; echo)" \
&& su -c "sed -i 's/PASSWORD/$NEW_PASS/g;' /home/coder/.config/code-server/config.yaml" "coder" \
&& for EXTENSION in /home/coder/wpilib/$ARTIFACTSYEAR/vsCodeExtensions/*.vsix; do su -c "code-server --install-extension $EXTENSION" "coder"; done
EXPOSE 8080
USER coder
ENV USER=coder
WORKDIR /home/coder
ENTRYPOINT ["/usr/bin/code-server", "--bind-addr", "0.0.0.0:8080", "."]

View File

@ -1,4 +1,4 @@
bind-addr: IPADDRESS:PORT
bind-addr: 0.0.0.0:8080
auth: password
password: PASSWORD
cert: false

View File

@ -38,10 +38,6 @@ if [ $(whoami) != 'root' ]; then
exit 2
fi
echo "Installing code-server"
curl -fsSL https://code-server.dev/install.sh | sh
echo "Downloading WPILIB"
WPILIB_FILE_NAME="$(echo "$WPILIB_DL_URL" | grep -o '[^/]*$')"

View File

@ -29,6 +29,7 @@ done
USERNAME=${@:$OPTIND:1}
PORT=${@:$OPTIND+1:1}
HOMEDIR=${@:$OPTIND+2:1}
if [ $USERNAME == '' ]; then
echo "You need to specify a user to setup"
@ -45,7 +46,7 @@ if [ "$(grep -o "$USERNAME" /etc/passwd | uniq)" == "$USERNAME" ]; then
echo "User $USERNAME already exists, skipping user creation"
fi
else
useradd "$USERNAME"
useradd -d "$HOMEDIR/$USERNAME" "$USERNAME"
fi
echo "Unpacking WPILIB"