redox/docker/Dockerfile
fengalin 20a38979c4 Docker: allow building the container on MacOS and Linux (#1037)
On MacOS, while building the container, `useradd` returns with code 4 (UID already in use), even with option -o. On this platform, the access rights for a volume attached to the container are translated to the container's user and group. So, there is no need to handle UID and GID compliance like we do on Linux. See this for reference: https://docs.docker.com/docker-for-mac/osxfs/

This modification allows not specifying the UID and GID while building the container, keeping the defaults for `useradd`.
2017-08-29 11:12:59 +02:00

48 lines
1.8 KiB
Docker
Executable file

FROM ubuntu:17.04
ENV USER user
ARG LOCAL_UID=local
ARG LOCAL_GID=local
ENV BUILD_UID=${LOCAL_UID:-9001}
ENV BUILD_GID=${LOCAL_GID:-9001}
RUN apt-get update \
&& apt-get install -y dirmngr git gosu gcc fuse nasm qemu-utils pkg-config \
libfuse-dev make curl wget file sudo apt-transport-https autoconf flex \
bison texinfo \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F \
&& echo "deb https://static.redox-os.org/toolchain/apt/ /" >> /etc/apt/sources.list.d/redox.list \
&& apt-get update -o Dir::Etc::sourcelist="redox.list" \
&& apt-get install -y x86-64-unknown-redox-newlib x86-64-unknown-redox-binutils x86-64-unknown-redox-gcc \
&& if [ $BUILD_UID != local ] && [ $BUILD_GID != local ]; then \
groupadd -g $BUILD_GID user; \
useradd --shell /bin/bash -u $BUILD_UID -g $BUILD_GID -o -c "" -m $USER; \
else \
useradd --shell /bin/bash -c "" -m $USER; \
fi \
&& echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user-no-sudo-password
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
USER $USER
ENV HOME /home/$USER
ENV PATH $HOME/.cargo/bin:$PATH
ENV SRC_PATH $HOME/src
WORKDIR $HOME
RUN curl https://sh.rustup.rs > sh.rustup.rs \
&& sh sh.rustup.rs -y \
&& rustup update \
&& rustup component add rust-src \
&& rustup default nightly \
&& curl -O https://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz \
&& tar -xvpf automake-1.15.1.tar.gz; cd automake-1.15.1; ./configure; make; sudo make install; cd .. \
&& cargo install xargo \
&& cargo install cargo-config \
&& mkdir -p $SRC_PATH
WORKDIR $SRC_PATH
USER root
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]