75 lines
3.1 KiB
Docker
75 lines
3.1 KiB
Docker
# syntax=docker/dockerfile:experimental
|
|
|
|
FROM fedora:39
|
|
|
|
RUN dnf update -y && dnf install -y \
|
|
curl \
|
|
git \
|
|
git-lfs \
|
|
htop \
|
|
vim \
|
|
nano \
|
|
tar \
|
|
bzip2 \
|
|
unzip \
|
|
python3-pip \
|
|
&& rm -rf /var/cache/dnf \
|
|
&& git lfs install \
|
|
&& curl -fsSL https://code-server.dev/install.sh | sh
|
|
|
|
RUN useradd -u 1000 coder
|
|
|
|
COPY code-server.tar.gz /tmp
|
|
COPY settings.json /tmp
|
|
COPY config.yaml /tmp
|
|
COPY project-creator.py /tmp
|
|
COPY entrypoint.sh /usr/bin
|
|
|
|
ARG WPILIB_DL_URL
|
|
ARG WPILIB_FILE_NAME=wpilib.tar.gz
|
|
|
|
RUN chown 750 /usr/bin/entrypoint.sh \
|
|
&& 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/maven/MavenMetaDataFixer.jar" "coder" \
|
|
&& rm -rf /home/coder/wpilib/$ARTIFACTSYEAR/advantagescope \
|
|
&& rm -f /home/coder/wpilib/$ARTIFACTSYEAR/installUtils/$GRADLEZIP \
|
|
&& rm -rf /home/coder/wpilib/$ARTIFACTSYEAR/tools \
|
|
&& rm -rf /home/coder/wpilib/$ARTIFACTSYEAR/documentation \
|
|
&& rm -rf /root/.cache \
|
|
&& 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 "sed -i 's/###YEAR###/$ARTIFACTSYEAR/g;' /home/coder/.local/share/code-server/User/settings.json" "coder" \
|
|
&& su -c "cp -f /tmp/config.yaml /home/coder/.config/code-server" "coder" \
|
|
&& su -c "cp -f /tmp/project-creator.py /home/coder" "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/entrypoint.sh"]
|
|
|
|
|