From e583e45d9a2221b3ed2a743cfa172abcd2a1d6a0 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 8 Jun 2020 19:52:32 +0200 Subject: Use pictrs instead of pictshare --- docker/dev/docker-compose.yml | 42 ++++++++++++++++++++++++------------------ docker/dev/nginx.conf | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 18 deletions(-) create mode 100644 docker/dev/nginx.conf (limited to 'docker') diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index 1702f66d..6c0624c4 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -1,22 +1,22 @@ version: '3.3' services: - postgres: - image: postgres:12-alpine - environment: - - POSTGRES_USER=lemmy - - POSTGRES_PASSWORD=password - - POSTGRES_DB=lemmy + nginx: + image: nginx:1.19-alpine + ports: + - "8536:8536" volumes: - - ./volumes/postgres:/var/lib/postgresql/data - restart: always + - ./nginx.conf:/etc/nginx/nginx.conf + depends_on: + - lemmy + - pictrs + - iframely + restart: "always" lemmy: build: context: ../../ dockerfile: docker/dev/Dockerfile - ports: - - "127.0.0.1:8536:8536" restart: always environment: - RUST_LOG=debug @@ -24,21 +24,27 @@ services: - ../lemmy.hjson:/config/config.hjson depends_on: - postgres - - pictshare - iframely - pictshare: - image: hascheksolutions/pictshare:latest - ports: - - "127.0.0.1:8537:80" + postgres: + image: postgres:12-alpine + environment: + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=password + - POSTGRES_DB=lemmy volumes: - - ./volumes/pictshare:/usr/share/nginx/html/data + - ./volumes/postgres:/var/lib/postgresql/data + restart: always + + pictrs: + image: asonix/pictrs:amd64-v0.1.0-r9 + user: 991:991 + volumes: + - ./volumes/pictrs:/mnt restart: always iframely: image: dogbin/iframely:latest - ports: - - "127.0.0.1:8061:80" volumes: - ../iframely.config.local.js:/iframely/config.local.js:ro restart: always diff --git a/docker/dev/nginx.conf b/docker/dev/nginx.conf new file mode 100644 index 00000000..3e4ff510 --- /dev/null +++ b/docker/dev/nginx.conf @@ -0,0 +1,40 @@ +events { + worker_connections 1024; +} + +http { + server { + listen 8536; + server_name 127.0.0.1; + #access_log off; + + # Upload limit for pictshare + client_max_body_size 50M; + + location / { + proxy_pass http://lemmy:8536; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # WebSocket support + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + location /pictrs/ { + proxy_pass http://pictrs:8080/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /iframely/ { + proxy_pass http://iframely:80/; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} -- cgit v1.2.3 From bd26e4e9c1b146163ee839de0a45bb9354efd1f2 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 9 Jun 2020 17:17:24 -0400 Subject: Fixing some front end pictshare to pictrs conversions. --- docker/dev/docker-compose.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'docker') diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index 6c0624c4..60b04beb 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -1,22 +1,13 @@ version: '3.3' services: - nginx: - image: nginx:1.19-alpine - ports: - - "8536:8536" - volumes: - - ./nginx.conf:/etc/nginx/nginx.conf - depends_on: - - lemmy - - pictrs - - iframely - restart: "always" lemmy: build: context: ../../ dockerfile: docker/dev/Dockerfile + ports: + - "127.0.0.1:8536:8536" restart: always environment: - RUST_LOG=debug @@ -37,7 +28,9 @@ services: restart: always pictrs: - image: asonix/pictrs:amd64-v0.1.0-r9 + image: asonix/pictrs:v0.1.0-r13 + ports: + - "127.0.0.1:8537:8080" user: 991:991 volumes: - ./volumes/pictrs:/mnt @@ -45,6 +38,8 @@ services: iframely: image: dogbin/iframely:latest + ports: + - "127.0.0.1:8061:80" volumes: - ../iframely.config.local.js:/iframely/config.local.js:ro restart: always -- cgit v1.2.3 From 46bb3064ed64bee31e8ae3a31a9380bf9fb17f14 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 9 Jun 2020 22:49:42 -0400 Subject: Version v0.6.72 --- docker/prod/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docker') diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index db6e4004..8d773569 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.6.71 + image: dessalines/lemmy:v0.6.72 ports: - "127.0.0.1:8536:8536" restart: always -- cgit v1.2.3 From 043f484693c2bdc356e60b0a0e7ebdddcf1fad85 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 10 Jun 2020 11:27:12 -0400 Subject: Version v0.6.73 --- docker/prod/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docker') diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 8d773569..bbf2a698 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.6.72 + image: dessalines/lemmy:v0.6.73 ports: - "127.0.0.1:8536:8536" restart: always -- cgit v1.2.3 From 4cf1f080bf113d6e30383eb1fddd37ce16025558 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 10 Jun 2020 22:47:06 -0400 Subject: Adding delete picture via pict-rs delete tokens. Fixes #505 --- docker/dev/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docker') diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index 60b04beb..ab9ab7d8 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -28,7 +28,7 @@ services: restart: always pictrs: - image: asonix/pictrs:v0.1.0-r13 + image: asonix/pictrs:v0.1.3-r1 ports: - "127.0.0.1:8537:8080" user: 991:991 -- cgit v1.2.3 From 1b0212377df2e56c4e950a4abbf8c594daabc73a Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 11 Jun 2020 10:28:21 -0400 Subject: Version v0.6.74 --- docker/prod/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docker') diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index bbf2a698..246a9586 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.6.73 + image: dessalines/lemmy:v0.6.74 ports: - "127.0.0.1:8536:8536" restart: always -- cgit v1.2.3 From cddc23494d5fd0f8098524299980a6dcbcb3fca3 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 12 Jun 2020 09:48:51 -0400 Subject: Upgrading pict-rs for working gifs. --- docker/dev/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docker') diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index ab9ab7d8..2072024f 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -28,7 +28,7 @@ services: restart: always pictrs: - image: asonix/pictrs:v0.1.3-r1 + image: asonix/pictrs:v0.1.4-r0 ports: - "127.0.0.1:8537:8080" user: 991:991 -- cgit v1.2.3 From 4ea6c4ad5d1cac14d63f758f8fa6909b77a0b758 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Fri, 12 Jun 2020 15:29:50 +0200 Subject: Various build optimizations --- docker/dev/Dockerfile | 12 ++---- docker/dev/Dockerfile.aarch64 | 79 ------------------------------------ docker/dev/Dockerfile.armv7hf | 79 ------------------------------------ docker/dev/Dockerfile.libc | 88 ----------------------------------------- docker/dev/deploy.sh | 76 ----------------------------------- docker/dev/docker_update.sh | 4 ++ docker/dev/test_deploy.sh | 4 ++ docker/prod/Dockerfile | 58 +++++++++++++++++++++++++++ docker/prod/Dockerfile.aarch64 | 80 +++++++++++++++++++++++++++++++++++++ docker/prod/Dockerfile.armv7hf | 81 +++++++++++++++++++++++++++++++++++++ docker/prod/Dockerfile.libc | 90 ++++++++++++++++++++++++++++++++++++++++++ docker/prod/deploy.sh | 80 +++++++++++++++++++++++++++++++++++++ 12 files changed, 401 insertions(+), 330 deletions(-) delete mode 100644 docker/dev/Dockerfile.aarch64 delete mode 100644 docker/dev/Dockerfile.armv7hf delete mode 100644 docker/dev/Dockerfile.libc delete mode 100755 docker/dev/deploy.sh create mode 100644 docker/prod/Dockerfile create mode 100644 docker/prod/Dockerfile.aarch64 create mode 100644 docker/prod/Dockerfile.armv7hf create mode 100644 docker/prod/Dockerfile.libc create mode 100755 docker/prod/deploy.sh (limited to 'docker') diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index d9ffc2f3..fbec2536 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -21,17 +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 cargo build --release +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 release -RUN cargo build --frozen --release - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - +# Build for debug +RUN cargo build FROM ekidd/rust-musl-builder:1.42.0-openssl11 as docs WORKDIR /app @@ -47,7 +43,7 @@ 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=rust /app/server/target/x86_64-unknown-linux-musl/debug/lemmy_server /app/lemmy COPY --from=docs /app/docs/book/ /app/dist/documentation/ COPY --from=node /app/ui/dist /app/dist diff --git a/docker/dev/Dockerfile.aarch64 b/docker/dev/Dockerfile.aarch64 deleted file mode 100644 index 9636a590..00000000 --- a/docker/dev/Dockerfile.aarch64 +++ /dev/null @@ -1,79 +0,0 @@ -FROM node:10-jessie as node - -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 - - -# contains qemu-*-static for cross-compilation -FROM multiarch/qemu-user-static as qemu - - -FROM arm64v8/rust:1.40-buster as rust - -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin -#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - - -# Install musl -#RUN apt-get update && apt-get install -y mc -#RUN apt-get install -y musl-tools mc -#libpq-dev mc -#RUN rustup target add ${TARGET} - -# Cache deps -WORKDIR /app -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -RUN cargo build --release -# RUN cargo build -COPY server/src ./src/ -COPY server/migrations ./migrations/ -RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* - - -# build for release -RUN cargo build --frozen --release -# RUN cargo build --frozen - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -# RUN cp /app/server/target/debug/lemmy_server /app/server/ready -RUN cp /app/server/target/release/lemmy_server /app/server/ready - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM arm64v8/debian:buster-slim as lemmy - -#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 - -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=rust /app/server/ready /app/lemmy -COPY --from=node /app/ui/dist /app/dist - -RUN chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/docker/dev/Dockerfile.armv7hf b/docker/dev/Dockerfile.armv7hf deleted file mode 100644 index c2c9084c..00000000 --- a/docker/dev/Dockerfile.armv7hf +++ /dev/null @@ -1,79 +0,0 @@ -FROM node:10-jessie as node - -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 - - -# contains qemu-*-static for cross-compilation -FROM multiarch/qemu-user-static as qemu - - -FROM arm32v7/rust:1.37-buster as rust - -#COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - - -# Install musl -#RUN apt-get update && apt-get install -y mc -#RUN apt-get install -y musl-tools mc -#libpq-dev mc -#RUN rustup target add ${TARGET} - -# Cache deps -WORKDIR /app -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -#RUN cargo build --release -# RUN cargo build - RUN RUSTFLAGS='-Ccodegen-units=1' cargo build -COPY server/src ./src/ -COPY server/migrations ./migrations/ -RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* - - -# build for release -#RUN cargo build --frozen --release -RUN cargo build --frozen - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -RUN cp /app/server/target/debug/lemmy_server /app/server/ready -#RUN cp /app/server/target/release/lemmy_server /app/server/ready - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM arm32v7/debian:buster-slim as lemmy - -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 - -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=rust /app/server/ready /app/lemmy -COPY --from=node /app/ui/dist /app/dist - -RUN chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/docker/dev/Dockerfile.libc b/docker/dev/Dockerfile.libc deleted file mode 100644 index 6348342f..00000000 --- a/docker/dev/Dockerfile.libc +++ /dev/null @@ -1,88 +0,0 @@ -# can be build on x64, arm32, arm64 platforms -# to build on target platform run -# docker build -f Dockerfile.libc -t dessalines/lemmy:version ../.. -# -# to use docker buildx run -# docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile.libc -t YOURNAME/lemmy --push ../.. - -FROM node:12-buster as node -# use this if use docker buildx -#FROM --platform=$BUILDPLATFORM node:12-buster as node - -WORKDIR /app/ui - -# Cache deps -COPY ui/package.json ui/yarn.lock ./ -RUN yarn install --pure-lockfile --network-timeout 100000 - -# Build -COPY ui /app/ui -RUN yarn build - - -FROM rust:1.42 as rust - -# Cache deps -WORKDIR /app - -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs - - -RUN cargo build --release -#RUN cargo build && \ -# rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* -COPY server/src ./src/ -COPY server/migrations ./migrations/ - - -# build for release -# workaround for https://github.com/rust-lang/rust/issues/62896 -#RUN RUSTFLAGS='-Ccodegen-units=1' cargo build --release -RUN cargo build --release --frozen -#RUN cargo build --frozen - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -# make result place always the same for lemmy container -RUN cp /app/server/target/release/lemmy_server /app/server/ready -#RUN cp /app/server/target/debug/lemmy_server /app/server/ready - - -FROM rust:1.42 as docs - -WORKDIR /app - -# Build docs -COPY docs ./docs -RUN cargo install mdbook -RUN mdbook build docs/ - - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM debian:buster as lemmy - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=node /app/ui/dist /app/dist -COPY --from=docs /app/docs/book/ /app/dist/documentation/ -COPY --from=rust /app/server/ready /app/lemmy - -RUN chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/docker/dev/deploy.sh b/docker/dev/deploy.sh deleted file mode 100755 index 09b21b0b..00000000 --- a/docker/dev/deploy.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -git checkout master - -# Import translations -git fetch weblate -git merge weblate/master - -# Creating the new tag -new_tag="$1" -third_semver=$(echo $new_tag | cut -d "." -f 3) - -# Setting the version on the front end -cd ../../ -echo "export const version: string = '$new_tag';" > "ui/src/version.ts" -git add "ui/src/version.ts" -# Setting the version on the backend -echo "pub const VERSION: &str = \"$new_tag\";" > "server/src/version.rs" -git add "server/src/version.rs" -# Setting the version for Ansible -echo $new_tag > "ansible/VERSION" -git add "ansible/VERSION" - -cd docker/dev || exit - -# Changing the docker-compose prod -sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml -sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../../ansible/templates/docker-compose.yml -git add ../prod/docker-compose.yml -git add ../../ansible/templates/docker-compose.yml - -# The commit -git commit -m"Version $new_tag" -git tag $new_tag - -# 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 -else - docker manifest create dessalines/lemmy:$new_tag \ - dessalines/lemmy:x64-$new_tag -fi - -docker manifest push dessalines/lemmy:$new_tag - -# Push -git push origin $new_tag -git push - -# Pushing to any ansible deploys -cd ../../../lemmy-ansible || exit -ansible-playbook -i prod playbooks/site.yml --vault-password-file vault_pass diff --git a/docker/dev/docker_update.sh b/docker/dev/docker_update.sh index 9d0f4542..21e92ba8 100755 --- a/docker/dev/docker_update.sh +++ b/docker/dev/docker_update.sh @@ -1,2 +1,6 @@ #!/bin/sh +set -e + +export COMPOSE_DOCKER_CLI_BUILD=1 +export DOCKER_BUILDKIT=1 docker-compose up -d --no-deps --build diff --git a/docker/dev/test_deploy.sh b/docker/dev/test_deploy.sh index 1ae91f65..ce85f60c 100755 --- a/docker/dev/test_deploy.sh +++ b/docker/dev/test_deploy.sh @@ -1,4 +1,8 @@ #!/bin/sh +set -e + +export COMPOSE_DOCKER_CLI_BUILD=1 +export DOCKER_BUILDKIT=1 # Rebuilding dev docker docker-compose build diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile new file mode 100644 index 00000000..b9eec456 --- /dev/null +++ b/docker/prod/Dockerfile @@ -0,0 +1,58 @@ +FROM node:10-jessie as node + +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 ekidd/rust-musl-builder:1.42.0-openssl11 as rust + +# 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 . +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +RUN cargo build --release +RUN rm -f ./target/x86_64-unknown-linux-musl/release/deps/lemmy_server* +COPY server/src ./src/ +COPY server/migrations ./migrations/ + +# Build for release +RUN cargo build --frozen --release + +# reduce binary size +RUN strip /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server + +FROM ekidd/rust-musl-builder:1.42.0-openssl11 as docs +WORKDIR /app +COPY docs ./docs +RUN sudo chown -R rust:rust . +RUN mdbook build docs/ + + +FROM alpine:3.10 + +# 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 +RUN chown lemmy:lemmy /app/lemmy +USER lemmy +EXPOSE 8536 +CMD ["/app/lemmy"] diff --git a/docker/prod/Dockerfile.aarch64 b/docker/prod/Dockerfile.aarch64 new file mode 100644 index 00000000..7a1c833f --- /dev/null +++ b/docker/prod/Dockerfile.aarch64 @@ -0,0 +1,80 @@ +FROM node:10-jessie as node + +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 + + +# contains qemu-*-static for cross-compilation +FROM multiarch/qemu-user-static as qemu + + +FROM arm64v8/rust:1.40-buster as rust + +COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin +#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + + +# Install musl +#RUN apt-get update && apt-get install -y mc +#RUN apt-get install -y musl-tools mc +#libpq-dev mc +#RUN rustup target add ${TARGET} + +# Cache deps +WORKDIR /app +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +RUN cargo build --release +# RUN cargo build +COPY server/src ./src/ +COPY server/migrations ./migrations/ +RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* + +# build for release +RUN cargo build --frozen --release + +# reduce binary size +RUN strip /app/server/target/release/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +# RUN cp /app/server/target/debug/lemmy_server /app/server/ready +RUN cp /app/server/target/release/lemmy_server /app/server/ready + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM arm64v8/debian:buster-slim as lemmy + +#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin +COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 + +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=rust /app/server/ready /app/lemmy +COPY --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.armv7hf b/docker/prod/Dockerfile.armv7hf new file mode 100644 index 00000000..efd937a3 --- /dev/null +++ b/docker/prod/Dockerfile.armv7hf @@ -0,0 +1,81 @@ +FROM node:10-jessie as node + +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 + + +# contains qemu-*-static for cross-compilation +FROM multiarch/qemu-user-static as qemu + + +FROM arm32v7/rust:1.37-buster as rust + +#COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + + +# Install musl +#RUN apt-get update && apt-get install -y mc +#RUN apt-get install -y musl-tools mc +#libpq-dev mc +#RUN rustup target add ${TARGET} + +# Cache deps +WORKDIR /app +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +#RUN cargo build --release +# RUN cargo build + RUN RUSTFLAGS='-Ccodegen-units=1' cargo build +COPY server/src ./src/ +COPY server/migrations ./migrations/ +RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* + + +# build for release +RUN cargo build --frozen --release + +# reduce binary size +RUN strip /app/server/target/debug/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +RUN cp /app/server/target/debug/lemmy_server /app/server/ready +#RUN cp /app/server/target/release/lemmy_server /app/server/ready + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM arm32v7/debian:buster-slim as lemmy + +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 + +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=rust /app/server/ready /app/lemmy +COPY --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.libc b/docker/prod/Dockerfile.libc new file mode 100644 index 00000000..9c750282 --- /dev/null +++ b/docker/prod/Dockerfile.libc @@ -0,0 +1,90 @@ +# can be build on x64, arm32, arm64 platforms +# to build on target platform run +# docker build -f Dockerfile.libc -t dessalines/lemmy:version ../.. +# +# to use docker buildx run +# docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile.libc -t YOURNAME/lemmy --push ../.. + +FROM node:12-buster as node +# use this if use docker buildx +#FROM --platform=$BUILDPLATFORM node:12-buster as node + +WORKDIR /app/ui + +# Cache deps +COPY ui/package.json ui/yarn.lock ./ +RUN yarn install --pure-lockfile --network-timeout 100000 + +# Build +COPY ui /app/ui +RUN yarn build + + +FROM rust:1.42 as rust + +# Cache deps +WORKDIR /app + +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs + + +RUN cargo build --release +#RUN cargo build && \ +# rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* +COPY server/src ./src/ +COPY server/migrations ./migrations/ + + +# build for release +# workaround for https://github.com/rust-lang/rust/issues/62896 +#RUN RUSTFLAGS='-Ccodegen-units=1' cargo build --release +RUN cargo build --release --frozen + +# reduce binary size +RUN strip /app/server/target/release/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +# make result place always the same for lemmy container +RUN cp /app/server/target/release/lemmy_server /app/server/ready +#RUN cp /app/server/target/debug/lemmy_server /app/server/ready + + +FROM rust:1.42 as docs + +WORKDIR /app + +# Build docs +COPY docs ./docs +RUN cargo install mdbook +RUN mdbook build docs/ + + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM debian:buster as lemmy + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=node /app/ui/dist /app/dist +COPY --from=docs /app/docs/book/ /app/dist/documentation/ +COPY --from=rust /app/server/ready /app/lemmy + +RUN chown lemmy:lemmy /app/lemmy +USER lemmy +EXPOSE 8536 +CMD ["/app/lemmy"] diff --git a/docker/prod/deploy.sh b/docker/prod/deploy.sh new file mode 100755 index 00000000..0ad47bcd --- /dev/null +++ b/docker/prod/deploy.sh @@ -0,0 +1,80 @@ +#!/bin/sh +set -e +git checkout master + +# Import translations +git fetch weblate +git merge weblate/master + +# Creating the new tag +new_tag="$1" +third_semver=$(echo $new_tag | cut -d "." -f 3) + +# Setting the version on the front end +cd ../../ +echo "export const version: string = '$new_tag';" > "ui/src/version.ts" +git add "ui/src/version.ts" +# Setting the version on the backend +echo "pub const VERSION: &str = \"$new_tag\";" > "server/src/version.rs" +git add "server/src/version.rs" +# Setting the version for Ansible +echo $new_tag > "ansible/VERSION" +git add "ansible/VERSION" + +cd docker/prod || exit + +# Changing the docker-compose prod +sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml +sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../../ansible/templates/docker-compose.yml +git add ../prod/docker-compose.yml +git add ../../ansible/templates/docker-compose.yml + +# The commit +git commit -m"Version $new_tag" +git tag $new_tag + +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 +else + docker manifest create dessalines/lemmy:$new_tag \ + dessalines/lemmy:x64-$new_tag +fi + +docker manifest push dessalines/lemmy:$new_tag + +# Push +git push origin $new_tag +git push + +# Pushing to any ansible deploys +cd ../../../lemmy-ansible || exit +ansible-playbook -i prod playbooks/site.yml --vault-password-file vault_pass -- cgit v1.2.3 From 7cb7c1f0f9a77c3019200edffa5381f8a4d76e55 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 12 Jun 2020 16:17:01 -0400 Subject: Adding lld to docker builds. #810 --- docker/dev/Dockerfile | 8 ++++++-- docker/prod/Dockerfile | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'docker') diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index fbec2536..3ebfa097 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -12,6 +12,10 @@ 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 . @@ -21,13 +25,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 cargo build +RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" 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 cargo build +RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build FROM ekidd/rust-musl-builder:1.42.0-openssl11 as docs WORKDIR /app diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index b9eec456..bc17a186 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -12,6 +12,10 @@ 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 . @@ -21,13 +25,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 cargo build --release +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/ # Build for release -RUN cargo build --frozen --release +RUN RUSTFLAGS="-Clink-arg=-fuse-ld=lld" cargo build --frozen --release # reduce binary size RUN strip /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server -- cgit v1.2.3 From f647f2ae6cb187be08c6fd0f7daeb51e4093145a Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 12 Jun 2020 17:05:19 -0400 Subject: Blocking pict-rs import location --- docker/dev/nginx.conf | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 docker/dev/nginx.conf (limited to 'docker') diff --git a/docker/dev/nginx.conf b/docker/dev/nginx.conf deleted file mode 100644 index 3e4ff510..00000000 --- a/docker/dev/nginx.conf +++ /dev/null @@ -1,40 +0,0 @@ -events { - worker_connections 1024; -} - -http { - server { - listen 8536; - server_name 127.0.0.1; - #access_log off; - - # Upload limit for pictshare - client_max_body_size 50M; - - location / { - proxy_pass http://lemmy:8536; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - # WebSocket support - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - - location /pictrs/ { - proxy_pass http://pictrs:8080/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - - location /iframely/ { - proxy_pass http://iframely:80/; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } -} -- cgit v1.2.3 From 6f58be94935701a24bb8b9b28845d1ece7864fef Mon Sep 17 00:00:00 2001 From: Igor Velkov Date: Sun, 14 Jun 2020 01:28:50 +0300 Subject: dockerfile for x64 and arm building with musl --- docker/dev/Dockerfile.m | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docker/dev/Dockerfile.m (limited to 'docker') diff --git a/docker/dev/Dockerfile.m b/docker/dev/Dockerfile.m new file mode 100644 index 00000000..9df1ae41 --- /dev/null +++ b/docker/dev/Dockerfile.m @@ -0,0 +1,74 @@ + +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"] -- cgit v1.2.3 From bda657b6381ed82e1e39fda61c3c08b74f61322f Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 14 Jun 2020 16:36:18 -0400 Subject: Some reorg of Dockerfiles. --- docker/dev/Dockerfile | 11 ++-- docker/dev/Dockerfile.m | 74 ------------------------- docker/prod/Dockerfile | 82 ++++++++++++++++------------ docker/prod/Dockerfile.aarch64 | 80 --------------------------- docker/prod/Dockerfile.armv7hf | 81 ---------------------------- docker/prod/Dockerfile.libc | 90 ------------------------------- docker/prod/docker_old/Dockerfile.aarch64 | 80 +++++++++++++++++++++++++++ docker/prod/docker_old/Dockerfile.armv7hf | 81 ++++++++++++++++++++++++++++ docker/prod/docker_old/Dockerfile.libc | 90 +++++++++++++++++++++++++++++++ 9 files changed, 301 insertions(+), 368 deletions(-) delete mode 100644 docker/dev/Dockerfile.m delete mode 100644 docker/prod/Dockerfile.aarch64 delete mode 100644 docker/prod/Dockerfile.armv7hf delete mode 100644 docker/prod/Dockerfile.libc create mode 100644 docker/prod/docker_old/Dockerfile.aarch64 create mode 100644 docker/prod/docker_old/Dockerfile.armv7hf create mode 100644 docker/prod/docker_old/Dockerfile.libc (limited to 'docker') 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/dev/Dockerfile.m b/docker/dev/Dockerfile.m deleted file mode 100644 index 9df1ae41..00000000 --- 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 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/Dockerfile.aarch64 b/docker/prod/Dockerfile.aarch64 deleted file mode 100644 index 7a1c833f..00000000 --- a/docker/prod/Dockerfile.aarch64 +++ /dev/null @@ -1,80 +0,0 @@ -FROM node:10-jessie as node - -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 - - -# contains qemu-*-static for cross-compilation -FROM multiarch/qemu-user-static as qemu - - -FROM arm64v8/rust:1.40-buster as rust - -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin -#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - - -# Install musl -#RUN apt-get update && apt-get install -y mc -#RUN apt-get install -y musl-tools mc -#libpq-dev mc -#RUN rustup target add ${TARGET} - -# Cache deps -WORKDIR /app -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -RUN cargo build --release -# RUN cargo build -COPY server/src ./src/ -COPY server/migrations ./migrations/ -RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* - -# build for release -RUN cargo build --frozen --release - -# reduce binary size -RUN strip /app/server/target/release/lemmy_server - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -# RUN cp /app/server/target/debug/lemmy_server /app/server/ready -RUN cp /app/server/target/release/lemmy_server /app/server/ready - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM arm64v8/debian:buster-slim as lemmy - -#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 - -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=rust /app/server/ready /app/lemmy -COPY --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.armv7hf b/docker/prod/Dockerfile.armv7hf deleted file mode 100644 index efd937a3..00000000 --- a/docker/prod/Dockerfile.armv7hf +++ /dev/null @@ -1,81 +0,0 @@ -FROM node:10-jessie as node - -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 - - -# contains qemu-*-static for cross-compilation -FROM multiarch/qemu-user-static as qemu - - -FROM arm32v7/rust:1.37-buster as rust - -#COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - - -# Install musl -#RUN apt-get update && apt-get install -y mc -#RUN apt-get install -y musl-tools mc -#libpq-dev mc -#RUN rustup target add ${TARGET} - -# Cache deps -WORKDIR /app -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -#RUN cargo build --release -# RUN cargo build - RUN RUSTFLAGS='-Ccodegen-units=1' cargo build -COPY server/src ./src/ -COPY server/migrations ./migrations/ -RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* - - -# build for release -RUN cargo build --frozen --release - -# reduce binary size -RUN strip /app/server/target/debug/lemmy_server - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -RUN cp /app/server/target/debug/lemmy_server /app/server/ready -#RUN cp /app/server/target/release/lemmy_server /app/server/ready - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM arm32v7/debian:buster-slim as lemmy - -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 - -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=rust /app/server/ready /app/lemmy -COPY --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.libc b/docker/prod/Dockerfile.libc deleted file mode 100644 index 9c750282..00000000 --- a/docker/prod/Dockerfile.libc +++ /dev/null @@ -1,90 +0,0 @@ -# can be build on x64, arm32, arm64 platforms -# to build on target platform run -# docker build -f Dockerfile.libc -t dessalines/lemmy:version ../.. -# -# to use docker buildx run -# docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile.libc -t YOURNAME/lemmy --push ../.. - -FROM node:12-buster as node -# use this if use docker buildx -#FROM --platform=$BUILDPLATFORM node:12-buster as node - -WORKDIR /app/ui - -# Cache deps -COPY ui/package.json ui/yarn.lock ./ -RUN yarn install --pure-lockfile --network-timeout 100000 - -# Build -COPY ui /app/ui -RUN yarn build - - -FROM rust:1.42 as rust - -# Cache deps -WORKDIR /app - -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs - - -RUN cargo build --release -#RUN cargo build && \ -# rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* -COPY server/src ./src/ -COPY server/migrations ./migrations/ - - -# build for release -# workaround for https://github.com/rust-lang/rust/issues/62896 -#RUN RUSTFLAGS='-Ccodegen-units=1' cargo build --release -RUN cargo build --release --frozen - -# reduce binary size -RUN strip /app/server/target/release/lemmy_server - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -# make result place always the same for lemmy container -RUN cp /app/server/target/release/lemmy_server /app/server/ready -#RUN cp /app/server/target/debug/lemmy_server /app/server/ready - - -FROM rust:1.42 as docs - -WORKDIR /app - -# Build docs -COPY docs ./docs -RUN cargo install mdbook -RUN mdbook build docs/ - - -#FROM alpine:3.10 -# debian because build with dynamic linking with debian:buster -FROM debian:buster as lemmy - -# Install libpq for postgres -#RUN apk add libpq -RUN apt-get update && apt-get install -y libpq5 -RUN addgroup --gid 1000 lemmy -# for alpine -#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -# for debian -RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy - -# Copy resources -COPY server/config/defaults.hjson /config/defaults.hjson -COPY --from=node /app/ui/dist /app/dist -COPY --from=docs /app/docs/book/ /app/dist/documentation/ -COPY --from=rust /app/server/ready /app/lemmy - -RUN chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/docker/prod/docker_old/Dockerfile.aarch64 b/docker/prod/docker_old/Dockerfile.aarch64 new file mode 100644 index 00000000..7a1c833f --- /dev/null +++ b/docker/prod/docker_old/Dockerfile.aarch64 @@ -0,0 +1,80 @@ +FROM node:10-jessie as node + +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 + + +# contains qemu-*-static for cross-compilation +FROM multiarch/qemu-user-static as qemu + + +FROM arm64v8/rust:1.40-buster as rust + +COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin +#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + + +# Install musl +#RUN apt-get update && apt-get install -y mc +#RUN apt-get install -y musl-tools mc +#libpq-dev mc +#RUN rustup target add ${TARGET} + +# Cache deps +WORKDIR /app +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +RUN cargo build --release +# RUN cargo build +COPY server/src ./src/ +COPY server/migrations ./migrations/ +RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* + +# build for release +RUN cargo build --frozen --release + +# reduce binary size +RUN strip /app/server/target/release/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +# RUN cp /app/server/target/debug/lemmy_server /app/server/ready +RUN cp /app/server/target/release/lemmy_server /app/server/ready + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM arm64v8/debian:buster-slim as lemmy + +#COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin +COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 + +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=rust /app/server/ready /app/lemmy +COPY --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/docker_old/Dockerfile.armv7hf b/docker/prod/docker_old/Dockerfile.armv7hf new file mode 100644 index 00000000..efd937a3 --- /dev/null +++ b/docker/prod/docker_old/Dockerfile.armv7hf @@ -0,0 +1,81 @@ +FROM node:10-jessie as node + +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 + + +# contains qemu-*-static for cross-compilation +FROM multiarch/qemu-user-static as qemu + + +FROM arm32v7/rust:1.37-buster as rust + +#COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + + +# Install musl +#RUN apt-get update && apt-get install -y mc +#RUN apt-get install -y musl-tools mc +#libpq-dev mc +#RUN rustup target add ${TARGET} + +# Cache deps +WORKDIR /app +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +#RUN cargo build --release +# RUN cargo build + RUN RUSTFLAGS='-Ccodegen-units=1' cargo build +COPY server/src ./src/ +COPY server/migrations ./migrations/ +RUN rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* + + +# build for release +RUN cargo build --frozen --release + +# reduce binary size +RUN strip /app/server/target/debug/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +RUN cp /app/server/target/debug/lemmy_server /app/server/ready +#RUN cp /app/server/target/release/lemmy_server /app/server/ready + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM arm32v7/debian:buster-slim as lemmy + +COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 + +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=rust /app/server/ready /app/lemmy +COPY --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/docker_old/Dockerfile.libc b/docker/prod/docker_old/Dockerfile.libc new file mode 100644 index 00000000..9c750282 --- /dev/null +++ b/docker/prod/docker_old/Dockerfile.libc @@ -0,0 +1,90 @@ +# can be build on x64, arm32, arm64 platforms +# to build on target platform run +# docker build -f Dockerfile.libc -t dessalines/lemmy:version ../.. +# +# to use docker buildx run +# docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile.libc -t YOURNAME/lemmy --push ../.. + +FROM node:12-buster as node +# use this if use docker buildx +#FROM --platform=$BUILDPLATFORM node:12-buster as node + +WORKDIR /app/ui + +# Cache deps +COPY ui/package.json ui/yarn.lock ./ +RUN yarn install --pure-lockfile --network-timeout 100000 + +# Build +COPY ui /app/ui +RUN yarn build + + +FROM rust:1.42 as rust + +# Cache deps +WORKDIR /app + +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs + + +RUN cargo build --release +#RUN cargo build && \ +# rm -f ./target/release/deps/lemmy_server* ; rm -f ./target/debug/deps/lemmy_server* +COPY server/src ./src/ +COPY server/migrations ./migrations/ + + +# build for release +# workaround for https://github.com/rust-lang/rust/issues/62896 +#RUN RUSTFLAGS='-Ccodegen-units=1' cargo build --release +RUN cargo build --release --frozen + +# reduce binary size +RUN strip /app/server/target/release/lemmy_server + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +# make result place always the same for lemmy container +RUN cp /app/server/target/release/lemmy_server /app/server/ready +#RUN cp /app/server/target/debug/lemmy_server /app/server/ready + + +FROM rust:1.42 as docs + +WORKDIR /app + +# Build docs +COPY docs ./docs +RUN cargo install mdbook +RUN mdbook build docs/ + + +#FROM alpine:3.10 +# debian because build with dynamic linking with debian:buster +FROM debian:buster as lemmy + +# Install libpq for postgres +#RUN apk add libpq +RUN apt-get update && apt-get install -y libpq5 +RUN addgroup --gid 1000 lemmy +# for alpine +#RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +# for debian +RUN adduser --disabled-password --shell /bin/sh --uid 1000 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /config/defaults.hjson +COPY --from=node /app/ui/dist /app/dist +COPY --from=docs /app/docs/book/ /app/dist/documentation/ +COPY --from=rust /app/server/ready /app/lemmy + +RUN chown lemmy:lemmy /app/lemmy +USER lemmy +EXPOSE 8536 +CMD ["/app/lemmy"] -- cgit v1.2.3 From 9f504329991c8076dde48fa0fbc5b75192bb4e42 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 15 Jun 2020 19:46:57 +0200 Subject: wip: Add migration script from pictshare to pictrs --- docker/prod/migrate-pictshare-to-pictrs.bash | 70 ++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docker/prod/migrate-pictshare-to-pictrs.bash (limited to 'docker') diff --git a/docker/prod/migrate-pictshare-to-pictrs.bash b/docker/prod/migrate-pictshare-to-pictrs.bash new file mode 100644 index 00000000..14ec07f2 --- /dev/null +++ b/docker/prod/migrate-pictshare-to-pictrs.bash @@ -0,0 +1,70 @@ +#!/bin/bash +set -e + +if [[ $(id -u) != 0 ]]; then + echo "This migration needs to be run as root" + exit +fi + +if [[ ! -f docker-compose.yml ]]; then + echo "No docker-compose.yml found in current directory. Is this the right folder?" + exit +fi + +echo "Restarting docker-compose, making sure that pictrs is started and pictshare is removed" +docker-compose up -d --remove-orphans + +if [[ -z $(docker-compose ps | grep pictrs) ]]; then + echo "Pict-rs is not running, make sure you update Lemmy first" + exit +fi + +echo "Installing imagemagick to convert .webp images to .jpg" +apt install imagemagick -y + +echo "Stopping Lemmy so that users dont upload new images during the migration" +docker-compose stop lemmy + +echo "Importing pictshare images to pict-rs" +pushd volumes/pictshare/ +IMAGE_NAMES=* +for image in $IMAGE_NAMES; do + IMAGE_PATH="$(pwd)/$image/$image" + if [[ ! -f $IMAGE_PATH ]]; then + continue + fi + if [ ${IMAGE_PATH: -5} == ".webp" ]; then + NEW_IMAGE_PATH=$(echo "$IMAGE_PATH" | sed "s/\.webp$/\.jpg/g") + convert "$IMAGE_PATH" "$NEW_IMAGE_PATH" + IMAGE_PATH="$NEW_IMAGE_PATH" + continue + fi + echo -e "\nImporting $IMAGE_PATH" + ret=0 + curl --fail -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import || ret=$? + if [[ $ret != 0 ]]; then + read -p "Failed to import $IMAGE_PATH, continue? " yn + case $yn in + [Yy]* ) ;; + [Nn]* ) exit;; + * ) exit;; + esac + fi +done + +echo "Fixing permissions on pictshare folder" +find . -type d -exec chmod 755 {} \; +find . -type f -exec chmod 644 {} \; + +popd + +echo "Rewrite image links in Lemmy database" +docker-compose exec -u postgres postgres psql -U lemmy -c "UPDATE user_ SET avatar = REPLACE(avatar, 'pictshare', 'pictrs/image') WHERE