
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`.
48 lines
1.8 KiB
Docker
Executable file
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"]
|