From: Dessalines Date: Mon, 22 Jun 2020 18:57:55 +0000 (-0400) Subject: Merge branch 'master' into iav-arm-musl-dessalines X-Git-Url: http://these/git/?a=commitdiff_plain;h=983a45e17884bf9ab5b52a859d47dc4c9168a181;hp=96c9f801a956adb2fdc5e6afb061c01c58962e00;p=lemmy.git Merge branch 'master' into iav-arm-musl-dessalines --- diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index 3ebfa097..82a03f3c 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -12,10 +12,6 @@ RUN yarn build FROM ekidd/rust-musl-builder:1.42.0-openssl11 as rust -# Install lld -RUN sudo apt-get update -y -RUN sudo apt-get install -y lld - # Cache deps WORKDIR /app RUN sudo chown -R rust:rust . @@ -25,13 +21,13 @@ COPY server/Cargo.toml server/Cargo.lock ./ RUN sudo chown -R rust:rust . RUN mkdir -p ./src/bin \ && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build +RUN cargo build RUN rm -f ./target/x86_64-unknown-linux-musl/release/deps/lemmy_server* COPY server/src ./src/ COPY server/migrations ./migrations/ # Build for debug -RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build +RUN cargo build FROM ekidd/rust-musl-builder:1.42.0-openssl11 as docs WORKDIR /app @@ -39,8 +35,7 @@ COPY docs ./docs RUN sudo chown -R rust:rust . RUN mdbook build docs/ - -FROM alpine:3.10 +FROM alpine:3.12 # Install libpq for postgres RUN apk add libpq diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index bc17a186..51255a6c 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -1,61 +1,73 @@ -FROM node:10-jessie as node +ARG RUST_BUILDER_IMAGE=shtripok/rust-musl-builder:arm -WORKDIR /app/ui - -# Cache deps -COPY ui/package.json ui/yarn.lock ./ -RUN yarn install --pure-lockfile - -# Build -COPY ui /app/ui -RUN yarn build +FROM $RUST_BUILDER_IMAGE as rust -FROM ekidd/rust-musl-builder:1.42.0-openssl11 as rust - -# Install lld -RUN sudo apt-get update -y -RUN sudo apt-get install -y lld +#ARG RUSTRELEASEDIR="debug" +ARG RUSTRELEASEDIR="release" # Cache deps WORKDIR /app RUN sudo chown -R rust:rust . RUN USER=root cargo new server WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN sudo chown -R rust:rust . +COPY --chown=rust:rust server/Cargo.toml server/Cargo.lock ./ +#RUN sudo chown -R rust:rust . RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build --release -RUN rm -f ./target/x86_64-unknown-linux-musl/release/deps/lemmy_server* -COPY server/src ./src/ -COPY server/migrations ./migrations/ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +RUN cargo build --release +RUN rm -f ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/deps/lemmy_server* +COPY --chown=rust:rust server/src ./src/ +COPY --chown=rust:rust server/migrations ./migrations/ +#USER root +#RUN sudo chown -R rust:rust /app/server +#USER rust + +# build for release +# workaround for https://github.com/rust-lang/rust/issues/62896 +#RUN RUSTFLAGS='-Ccodegen-units=1' cargo build --release +RUN cargo build --frozen --release +#RUN cargo build --release -# Build for release -RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build --frozen --release +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres # reduce binary size -RUN strip /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server +RUN strip ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server -FROM ekidd/rust-musl-builder:1.42.0-openssl11 as docs +RUN cp ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server /app/server/ + +FROM $RUST_BUILDER_IMAGE as docs WORKDIR /app -COPY docs ./docs -RUN sudo chown -R rust:rust . +COPY --chown=rust:rust docs ./docs +#RUN sudo chown -R rust:rust . RUN mdbook build docs/ -FROM alpine:3.10 +FROM node:12-buster as node + +WORKDIR /app/ui + +# Cache deps +COPY ui/package.json ui/yarn.lock ./ +RUN yarn install --pure-lockfile --network-timeout 600000 + +# Build +COPY ui /app/ui +RUN yarn build + +FROM alpine:3.12 as lemmy # Install libpq for postgres RUN apk add libpq +RUN addgroup -g 1000 lemmy +RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy # Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server /app/lemmy -COPY --from=docs /app/docs/book/ /app/dist/documentation/ -COPY --from=node /app/ui/dist /app/dist +COPY --chown=lemmy:lemmy server/config/defaults.hjson /config/defaults.hjson +COPY --chown=lemmy:lemmy --from=rust /app/server/lemmy_server /app/lemmy +COPY --chown=lemmy:lemmy --from=docs /app/docs/book/ /app/dist/documentation/ +COPY --chown=lemmy:lemmy --from=node /app/ui/dist /app/dist -RUN addgroup -g 1000 lemmy -RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy RUN chown lemmy:lemmy /app/lemmy USER lemmy EXPOSE 8536 diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh index 0ad47bcd..2c6e3d31 100755 --- a/docker/prod/deploy.sh +++ b/docker/prod/deploy.sh @@ -37,40 +37,20 @@ export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 # Rebuilding docker -docker-compose build -docker tag dev_lemmy:latest dessalines/lemmy:x64-$new_tag -docker push dessalines/lemmy:x64-$new_tag - -# Build for Raspberry Pi / other archs - -# Arm currently not working -# docker build -t lemmy:armv7hf -f Dockerfile.armv7hf ../../ -# docker tag lemmy:armv7hf dessalines/lemmy:armv7hf-$new_tag -# docker push dessalines/lemmy:armv7hf-$new_tag - -# aarch64 -# Only do this on major releases (IE the third semver is 0) -if [ $third_semver -eq 0 ]; then - # Registering qemu binaries - docker run --rm --privileged multiarch/qemu-user-static:register --reset - - docker build -t lemmy:aarch64 -f Dockerfile.aarch64 ../../ - docker tag lemmy:aarch64 dessalines/lemmy:arm64-$new_tag - docker push dessalines/lemmy:arm64-$new_tag -fi - -# Creating the manifest for the multi-arch build if [ $third_semver -eq 0 ]; then - docker manifest create dessalines/lemmy:$new_tag \ - dessalines/lemmy:x64-$new_tag \ - dessalines/lemmy:arm64-$new_tag + # TODO get linux/arm/v7 build working + # Build for Raspberry Pi / other archs too + docker buildx build --platform linux/amd64,linux/arm64 ../../ \ + --file Dockerfile \ + --tag dessalines/lemmy:$new_tag \ + --push else - docker manifest create dessalines/lemmy:$new_tag \ - dessalines/lemmy:x64-$new_tag + docker buildx build --platform linux/amd64 ../../ \ + --file Dockerfile \ + --tag dessalines/lemmy:$new_tag \ + --push fi -docker manifest push dessalines/lemmy:$new_tag - # Push git push origin $new_tag git push diff --git a/docker/prod/Dockerfile.aarch64 b/docker/prod/docker_old/Dockerfile.aarch64 similarity index 100% rename from docker/prod/Dockerfile.aarch64 rename to docker/prod/docker_old/Dockerfile.aarch64 diff --git a/docker/prod/Dockerfile.armv7hf b/docker/prod/docker_old/Dockerfile.armv7hf similarity index 100% rename from docker/prod/Dockerfile.armv7hf rename to docker/prod/docker_old/Dockerfile.armv7hf diff --git a/docker/prod/Dockerfile.libc b/docker/prod/docker_old/Dockerfile.libc similarity index 100% rename from docker/prod/Dockerfile.libc rename to docker/prod/docker_old/Dockerfile.libc