diff options
108 files changed, 13307 insertions, 2394 deletions
diff --git a/.dockerignore b/.dockerignore index a29cd2ec..255caf67 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,12 @@ +# build folders and similar which are not needed for the docker build ui/node_modules -ui/dist server/target docker/dev/volumes docker/federation/volumes +docker/federation-test/volumes .git +ansible + +# exceptions, needed for federation-test build + +!server/target/debug/lemmy_server @@ -1,10 +1,18 @@ +# local ansible configuration ansible/inventory ansible/inventory_dev ansible/passwords/ + +# docker build files docker/lemmy_mine.hjson docker/dev/env_deploy.sh +docker/federation/volumes +docker/federation-test/volumes +docker/dev/volumes + +# local build files build/ -.idea/ ui/src/translations -docker/dev/volumes -docker/federation-test/volumes + +# ide config +.idea/ @@ -73,7 +73,7 @@ Each lemmy server can set its own moderation policy; appointing site-wide admins - Full vote scores `(+/-)` like old reddit. - Themes, including light, dark, and solarized. - Emojis with autocomplete support. Start typing `:` - - User tagging using `@`, Community tagging using `#`. + - User tagging using `@`, Community tagging using `!`. - Integrated image uploading in both posts and comments. - A post can consist of a title and any combination of self text, a URL, or nothing else. - Notifications, on comment replies and when you're tagged. diff --git a/docker/dev/test_deploy.sh b/docker/dev/test_deploy.sh index ce85f60c..c2ecc0c8 100755 --- a/docker/dev/test_deploy.sh +++ b/docker/dev/test_deploy.sh @@ -1,15 +1,18 @@ -#!/bin/sh +#!/bin/bash set -e +BRANCH=$1 + +git checkout $BRANCH + export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 # Rebuilding dev docker -docker-compose build -docker tag dev_lemmy:latest dessalines/lemmy:test -docker push dessalines/lemmy:test +sudo docker build . -f "docker/dev/Dockerfile" -t "dessalines/lemmy:$BRANCH" +sudo docker push "dessalines/lemmy:$BRANCH" # Run the playbook -pushd ../../../lemmy-ansible -ansible-playbook -i test playbooks/site.yml --vault-password-file vault_pass +pushd ../lemmy-ansible +ansible-playbook -i test playbooks/site.yml popd diff --git a/docker/federation-test/run-tests.sh b/docker/federation-test/run-tests.sh new file mode 100755 index 00000000..b2d319dd --- /dev/null +++ b/docker/federation-test/run-tests.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +pushd ../../server/ +cargo build +popd + +sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest + +sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up -d + +pushd ../../ui +yarn +echo "Waiting for Lemmy to start..." +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8540/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8550/api/v1/site')" != "200" ]]; do sleep 1; done +while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8560/api/v1/site')" != "200" ]]; do sleep 1; done +yarn api-test || true +popd + +sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down + +sudo rm -r volumes/ diff --git a/docker/federation/Dockerfile b/docker/federation/Dockerfile new file mode 100644 index 00000000..ec7bf2d2 --- /dev/null +++ b/docker/federation/Dockerfile @@ -0,0 +1,17 @@ +FROM ekidd/rust-musl-builder:1.42.0-openssl11 + +USER root +RUN mkdir /app/dist/documentation/ -p \ + && addgroup --gid 1001 lemmy \ + && adduser --disabled-password --shell /bin/sh -u 1001 --ingroup lemmy lemmy + +# Copy resources +COPY server/config/defaults.hjson /app/config/defaults.hjson +COPY ui/dist /app/dist +COPY server/target/debug/lemmy_server /app/lemmy + +RUN chown lemmy:lemmy /app/ -R +USER lemmy +EXPOSE 8536 +WORKDIR /app +CMD ["/app/lemmy"] diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml new file mode 100644 index 00000000..900f7c9c --- /dev/null +++ b/docker/federation/docker-compose.yml @@ -0,0 +1,121 @@ +version: '3.3' + +services: + nginx: + image: nginx:1.17-alpine + ports: + - "8540:8540" + - "8550:8550" + - "8560:8560" + volumes: + # Hack to make this work from both docker/federation/ and docker/federation-test/ + - ../federation/nginx.conf:/etc/nginx/nginx.conf + depends_on: + - lemmy_alpha + - pictrs_alpha + - lemmy_beta + - pictrs_beta + - lemmy_gamma + - pictrs_gamma + - iframely + + lemmy_alpha: + image: lemmy-federation:latest + environment: + - LEMMY_HOSTNAME=lemmy_alpha:8540 + - LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_alpha:5432/lemmy + - LEMMY_JWT_SECRET=changeme + - LEMMY_FRONT_END_DIR=/app/dist + - LEMMY_FEDERATION__ENABLED=true + - LEMMY_FEDERATION__TLS_ENABLED=false + - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy_beta,lemmy_gamma + - LEMMY_PORT=8540 + - LEMMY_SETUP__ADMIN_USERNAME=lemmy_alpha + - LEMMY_SETUP__ADMIN_PASSWORD=lemmy + - LEMMY_SETUP__SITE_NAME=lemmy_alpha + - RUST_BACKTRACE=1 |