diff --git a/tools/Dockerfile b/tools/Dockerfile new file mode 100644 index 0000000..b7cc4a6 --- /dev/null +++ b/tools/Dockerfile @@ -0,0 +1,28 @@ +# Development environment for libcanard, based on Ubuntu 20.04 Focal. +# +# This software is distributed under the terms of the MIT License. +# Copyright (c) 2021 UAVCAN Consortium. +# Author: Kalyan Sriram + +FROM ubuntu:focal + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update && apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential cmake gcc-multilib g++-multilib \ + clang-tidy-12 clang-format-12 \ + gcc-avr avr-libc \ + sudo curl git ca-certificates + +# borrowed from MAVSDK https://github.com/mavlink/MAVSDK/blob/main/docker/Dockerfile-Ubuntu-20.04 +RUN curl -L https://github.com/ncopa/su-exec/archive/dddd1567b7c76365e1e0aac561287975020a8fad.tar.gz | tar xvz && \ + cd su-exec-* && make && mv su-exec /usr/local/bin && cd .. && rm -rf su-exec-* + +RUN useradd --shell /bin/bash -u 1001 -c "" -m user + +COPY entrypoint.sh /usr/local/bin/entrypoint.sh + +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] + +WORKDIR "/home/user/libcanard" diff --git a/tools/entrypoint.sh b/tools/entrypoint.sh new file mode 100755 index 0000000..ab25495 --- /dev/null +++ b/tools/entrypoint.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# Utility to use local user, taken from: +# https://github.com/mavlink/MAVSDK/blob/main/docker/entrypoint.sh + +# Use LOCAL_USER_ID if passed in at runtime. + +if [ -n "${LOCAL_USER_ID}" ]; then + echo "Starting with UID: $LOCAL_USER_ID" + usermod -u $LOCAL_USER_ID user + export HOME=/home/user + chown -R user:user $HOME + + exec su-exec user "$@" +else + exec "$@" +fi diff --git a/tools/run-docker.sh b/tools/run-docker.sh new file mode 100755 index 0000000..68c33f6 --- /dev/null +++ b/tools/run-docker.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +# First-time usage: docker build . && docker tag libcanard && ./run-docker.sh + +dockerimage=libcanard + +docker run -it --rm -v $(pwd):/home/user/libcanard:z -e LOCAL_USER_ID=`id -u` $dockerimage "$@"