From bda657b6381ed82e1e39fda61c3c08b74f61322f Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 14 Jun 2020 16:36:18 -0400 Subject: [PATCH] Some reorg of Dockerfiles. --- docker/dev/Dockerfile | 11 +-- docker/dev/Dockerfile.m | 74 ---------------- docker/prod/Dockerfile | 84 +++++++++++-------- .../prod/{ => docker_old}/Dockerfile.aarch64 | 0 .../prod/{ => docker_old}/Dockerfile.armv7hf | 0 docker/prod/{ => docker_old}/Dockerfile.libc | 0 6 files changed, 51 insertions(+), 118 deletions(-) delete mode 100644 docker/dev/Dockerfile.m rename docker/prod/{ => docker_old}/Dockerfile.aarch64 (100%) rename docker/prod/{ => docker_old}/Dockerfile.armv7hf (100%) rename docker/prod/{ => docker_old}/Dockerfile.libc (100%) diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index 3ebfa0972..82a03f3c9 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/dev/Dockerfile.m b/docker/dev/Dockerfile.m deleted file mode 100644 index 9df1ae411..000000000 --- a/docker/dev/Dockerfile.m +++ /dev/null @@ -1,74 +0,0 @@ - -ARG RUST_BUILDER_IMAGE=shtripok/rust-musl-builder:arm - -FROM $RUST_BUILDER_IMAGE as rust - -#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 --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 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 - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -RUN cp ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server /app/server/ - - -FROM $RUST_BUILDER_IMAGE as docs -WORKDIR /app -COPY --chown=rust:rust docs ./docs -#RUN sudo chown -R rust:rust . -RUN mdbook build docs/ - - -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.10 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 --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 chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index bc17a186a..51255a6c7 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 +FROM $RUST_BUILDER_IMAGE as rust -# Cache deps -COPY ui/package.json ui/yarn.lock ./ -RUN yarn install --pure-lockfile - -# Build -COPY ui /app/ui -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 +#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 -RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build --frozen --release +# 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 + +# 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 - -# 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 - RUN addgroup -g 1000 lemmy RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy + +# Copy resources +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 chown lemmy:lemmy /app/lemmy USER lemmy EXPOSE 8536 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