Created
October 3, 2023 22:37
-
-
Save nathanchan631/b11d6706369ad092583bde1704ac10fb to your computer and use it in GitHub Desktop.
Dockerfile for Ardupilot SITL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ARG BASE_IMAGE="ubuntu" | |
ARG TAG="22.04" | |
FROM ${BASE_IMAGE}:${TAG} | |
WORKDIR /ardupilot | |
ARG DEBIAN_FRONTEND=noninteractive | |
ARG USER_NAME=ardupilot | |
ARG USER_UID=1000 | |
ARG USER_GID=1000 | |
RUN groupadd ${USER_NAME} --gid ${USER_GID}\ | |
&& useradd -l -m ${USER_NAME} -u ${USER_UID} -g ${USER_GID} -s /bin/bash | |
RUN apt-get update && apt-get install --no-install-recommends -y \ | |
lsb-release \ | |
sudo \ | |
tzdata \ | |
bash-completion | |
COPY Tools/environment_install/install-prereqs-ubuntu.sh /ardupilot/Tools/environment_install/ | |
COPY Tools/completion /ardupilot/Tools/completion/ | |
# Create non root user for pip | |
ENV USER=${USER_NAME} | |
RUN echo "ardupilot ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USER_NAME} | |
RUN chmod 0440 /etc/sudoers.d/${USER_NAME} | |
RUN chown -R ${USER_NAME}:${USER_NAME} /${USER_NAME} | |
USER ${USER_NAME} | |
ENV SKIP_AP_EXT_ENV=1 SKIP_AP_GRAPHIC_ENV=1 SKIP_AP_COV_ENV=1 SKIP_AP_GIT_CHECK=1 | |
RUN Tools/environment_install/install-prereqs-ubuntu.sh -y | |
# add waf alias to ardupilot waf to .ardupilot_env | |
RUN echo "alias waf=\"/${USER_NAME}/waf\"" >> ~/.ardupilot_env | |
# Check that local/bin are in PATH for pip --user installed package | |
RUN echo "if [ -d \"\$HOME/.local/bin\" ] ; then\nPATH=\"\$HOME/.local/bin:\$PATH\"\nfi" >> ~/.ardupilot_env | |
# Create entrypoint as docker cannot do shell substitution correctly | |
RUN export ARDUPILOT_ENTRYPOINT="/home/${USER_NAME}/ardupilot_entrypoint.sh" \ | |
&& echo "#!/bin/bash" > $ARDUPILOT_ENTRYPOINT \ | |
&& echo "set -e" >> $ARDUPILOT_ENTRYPOINT \ | |
&& echo "source /home/${USER_NAME}/.ardupilot_env" >> $ARDUPILOT_ENTRYPOINT \ | |
&& echo 'exec "$@"' >> $ARDUPILOT_ENTRYPOINT \ | |
&& chmod +x $ARDUPILOT_ENTRYPOINT \ | |
&& sudo mv $ARDUPILOT_ENTRYPOINT /ardupilot_entrypoint.sh | |
# Set the buildlogs directory into /tmp as other directory aren't accessible | |
ENV BUILDLOGS=/tmp/buildlogs | |
# Cleanup | |
RUN sudo apt-get clean \ | |
&& sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | |
# Install dependecies | |
RUN sudo apt-get update | |
RUN sudo apt-get -y install libglib2.0-0 | |
RUN sudo apt-get -y install libsm6 libxrender-dev libxext6 | |
RUN sudo apt-get -y install python3-dev python3-opencv python3-wxgtk4.0 python3-pip python3-matplotlib python3-lxml python3-pygame | |
RUN pip3 install PyYAML mavproxy --user | |
RUN echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc | |
ENV DISPLAY :10 # XWindow display config | |
ENV CCACHE_MAXSIZE=1G | |
ENTRYPOINT ["/ardupilot_entrypoint.sh"] | |
CMD ["bash"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment