Add container build script

This commit is contained in:
asonix 2020-03-21 20:29:59 -05:00
parent 467bd860d9
commit 82d837b963
3 changed files with 81 additions and 0 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
/target
/artifacts

30
Dockerfile.arm64v8 Normal file
View file

@ -0,0 +1,30 @@
FROM arm64v8/alpine:3.11.3 AS build
COPY relay /relay
RUN \
apk add binutils && \
strip /relay
FROM arm64v8/alpine:3.11.3
ARG UID=991
ARG GID=991
RUN \
apk add tini && \
echo "Etc/UTC" > /etc/localtime && \
mkdir -p /opt/relay && \
addgroup --gid $GID relay && \
adduser -D -u $UID -G relay -h /opt/relay relay && \
echo "relay:`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24 | mkpasswd -s -m sha-256`" | chpasswd && \
chown -R relay:relay /opt/relay
COPY --from=build /relay /usr/bin/relay
USER relay
EXPOSE 8080
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["relay"]

50
build.sh Executable file
View file

@ -0,0 +1,50 @@
#!/usr/bin/env bash
BUILD_DATE=$(date)
VERSION=$1
function require() {
if [ "$1" = "" ]; then
echo "input '$2' required"
print_help
exit 1
fi
}
function print_help() {
echo "build.sh"
echo ""
echo "Usage:"
echo " build.sh [version]"
echo ""
echo "Args:"
echo " version: The version of the current container"
}
require "$VERSION" "version"
set -xe
# from `cargo install cross`
cross build \
--target aarch64-unknown-linux-musl \
--release
mkdir -p artifacts
cp ./target/aarch64-unknown-linux-musl/release/relay artifacts/relay
# from `sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes`
docker build \
--pull \
--no-cache \
--build-arg BUILD_DATE="${BUILD_DATE}" \
--build-arg TAG="${TAG}" \
-f "Dockerfile.arm64v8" \
-t "asonix/relay:${VERSION}-arm64v8" \
-t "asonix/relay:latest-arm64v8" \
-t "asonix/relay:latest" \
./artifacts
docker push "asonix/relay:${VERSION}-arm64v8"
docker push "asonix/relay:latest-arm64v8"
docker push "asonix/relay:latest"