FROM rust:latest ARG OPENSSL_VERSION=1.0.2r RUN addgroup --gid 1001 maidsafe && \ adduser --uid 1001 --ingroup maidsafe --home /home/maidsafe --shell /bin/sh --disabled-password --gecos "" maidsafe && \ # The parent container sets this to the 'staff' group, which causes problems # with reading code stored in Cargo's registry. chgrp -R maidsafe /usr/local # Install fixuid for dealing with permissions issues with mounted volumes. # We could perhaps put this into a base container at a later stage. RUN USER=maidsafe && \ GROUP=maidsafe && \ echo "06b3e053be5aaccc91dd5a45faf2356f fixuid-0.4-linux-amd64.tar.gz" > fixuid-0.4-linux-amd64.tar.gz.md5 && \ curl -OSsL https://github.com/boxboat/fixuid/releases/download/v0.4/fixuid-0.4-linux-amd64.tar.gz && \ md5sum -c fixuid-0.4-linux-amd64.tar.gz.md5 && \ tar -C /usr/local/bin -xzf fixuid-0.4-linux-amd64.tar.gz && \ rm fixuid-0.4-linux-amd64.tar.gz && \ chown root:root /usr/local/bin/fixuid && \ chmod 4755 /usr/local/bin/fixuid && \ mkdir -p /etc/fixuid && \ printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml RUN apt-get update -y && \ apt-get install -y \ gcc \ musl-dev \ musl-tools && \ mkdir -p /usr/local/musl/include && \ ln -s /usr/include/linux /usr/local/musl/include/linux && \ ln -s /usr/include/x86_64-linux-gnu/asm /usr/local/musl/include/asm && \ ln -s /usr/include/asm-generic /usr/local/musl/include/asm-generic && \ curl -LO "https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz" && \ tar xvzf "openssl-$OPENSSL_VERSION.tar.gz" && \ cd openssl-$OPENSSL_VERSION && \ CC=musl-gcc ./Configure no-shared no-zlib -fPIC --prefix=/usr/local/musl -DOPENSSL_NO_SECURE_MEMORY linux-x86_64 && \ CC=musl-gcc C_INCLUDE_PATH=/usr/local/musl/include/ make depend && \ CC=musl-gcc C_INCLUDE_PATH=/usr/local/musl/include/ make && \ CC=musl-gcc C_INCLUDE_PATH=/usr/local/musl/include/ make install && \ mkdir /target && \ chown maidsafe:maidsafe /target && \ mkdir /usr/src/safe_vault && \ chown maidsafe:maidsafe /usr/src/safe_vault && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/safe_vault COPY . . # During the build process, ownership of the source directory needs changed in advance because # the tests write a file and you need permissions for that. RUN chown -R maidsafe:maidsafe /usr/src/safe_vault USER maidsafe:maidsafe ENV CARGO_TARGET_DIR=/target \ RUST_BACKTRACE=1 RUN rustup component add rustfmt clippy && \ rustup target add x86_64-unknown-linux-musl && \ scripts/tests --verbose ENTRYPOINT ["fixuid"]