mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-26 14:21:19 +00:00
Merge pull request 'Simplify docker federation setup' (#92) from update-docker-federation into main
Reviewed-on: https://yerbamate.dev/LemmyNet/lemmy/pulls/92
This commit is contained in:
commit
ad7dfb0181
8 changed files with 33 additions and 103 deletions
20
docker/federation-test/servers.sh
vendored
20
docker/federation-test/servers.sh
vendored
|
@ -1,20 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
|
||||
sudo rm -rf volumes
|
||||
|
||||
pushd ../../server/
|
||||
cargo build
|
||||
popd
|
||||
|
||||
pushd ../../ui
|
||||
yarn
|
||||
popd
|
||||
|
||||
mkdir -p volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
|
||||
sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
|
||||
|
||||
sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
|
||||
|
||||
sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up
|
12
docker/federation-test/tests.sh
vendored
12
docker/federation-test/tests.sh
vendored
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -xe
|
||||
|
||||
pushd ../../ui
|
||||
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
|
||||
while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8570/api/v1/site')" != "200" ]]; do sleep 1; done
|
||||
while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8580/api/v1/site')" != "200" ]]; do sleep 1; done
|
||||
yarn api-test || true
|
||||
popd
|
17
docker/federation/Dockerfile
vendored
17
docker/federation/Dockerfile
vendored
|
@ -1,17 +0,0 @@
|
|||
FROM ekidd/rust-musl-builder:1.42.0-openssl11
|
||||
|
||||
USER root
|
||||
RUN mkdir /app/dist/documentation/ -p \
|
||||
&& addgroup --gid 1001 lemmy \
|
||||
&& adduser --gecos "" --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"]
|
3
docker/federation/docker-compose.yml
vendored
3
docker/federation/docker-compose.yml
vendored
|
@ -10,8 +10,7 @@ services:
|
|||
- "8570:8570"
|
||||
- "8580:8580"
|
||||
volumes:
|
||||
# Hack to make this work from both docker/federation/ and docker/federation-test/
|
||||
- ../federation/nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||
restart: on-failure
|
||||
depends_on:
|
||||
- pictrs
|
||||
|
|
28
docker/federation/run-federation-test.bash
vendored
28
docker/federation/run-federation-test.bash
vendored
|
@ -1,28 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# already start rust build in the background
|
||||
pushd ../../server/ || exit
|
||||
cargo build &
|
||||
popd || exit
|
||||
|
||||
if [ "$1" != "--no-yarn-build" ]; then
|
||||
pushd ../../ui/ || exit
|
||||
yarn
|
||||
yarn build
|
||||
popd || exit
|
||||
fi
|
||||
|
||||
# wait for rust build to finish
|
||||
pushd ../../server/ || exit
|
||||
cargo build
|
||||
popd || exit
|
||||
|
||||
sudo docker build ../../ --file Dockerfile -t lemmy-federation:latest
|
||||
|
||||
for Item in alpha beta gamma delta epsilon ; do
|
||||
sudo mkdir -p volumes/pictrs_$Item
|
||||
sudo chown -R 991:991 volumes/pictrs_$Item
|
||||
done
|
||||
|
||||
sudo docker-compose up
|
|
@ -2,26 +2,18 @@
|
|||
set -e
|
||||
|
||||
# make sure there are no old containers or old data around
|
||||
sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
|
||||
sudo docker-compose down
|
||||
sudo rm -rf volumes
|
||||
|
||||
pushd ../../server/
|
||||
cargo build
|
||||
popd
|
||||
|
||||
pushd ../../ui
|
||||
yarn
|
||||
popd
|
||||
|
||||
mkdir -p volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
|
||||
sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma,delta,epsilon}
|
||||
|
||||
sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
|
||||
sudo docker build ../../ --file ../dev/Dockerfile --tag lemmy-federation:latest
|
||||
|
||||
sudo mkdir -p volumes/pictrs_alpha
|
||||
sudo chown -R 991:991 volumes/pictrs_alpha
|
||||
|
||||
sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up -d
|
||||
sudo docker-compose up -d
|
||||
|
||||
pushd ../../ui
|
||||
echo "Waiting for Lemmy to start..."
|
||||
|
@ -33,6 +25,6 @@ while [[ "$(curl -s -o /dev/null -w '%{http_code}' 'localhost:8580/api/v1/site')
|
|||
yarn api-test || true
|
||||
popd
|
||||
|
||||
sudo docker-compose --file ../federation/docker-compose.yml --project-directory . down
|
||||
sudo docker-compose down
|
||||
|
||||
sudo rm -r volumes/
|
||||
sudo rm -r volumes
|
11
docker/federation/start-local-instances.bash
vendored
Executable file
11
docker/federation/start-local-instances.bash
vendored
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
sudo docker build ../../ --file ../dev/Dockerfile -t lemmy-federation:latest
|
||||
|
||||
for Item in alpha beta gamma delta epsilon ; do
|
||||
sudo mkdir -p volumes/pictrs_$Item
|
||||
sudo chown -R 991:991 volumes/pictrs_$Item
|
||||
done
|
||||
|
||||
sudo docker-compose up
|
27
docs/src/contributing_federation_development.md
vendored
27
docs/src/contributing_federation_development.md
vendored
|
@ -14,25 +14,30 @@ You need to have the following packages installed, the Docker service needs to b
|
|||
|
||||
- docker
|
||||
- docker-compose
|
||||
- cargo
|
||||
- yarn
|
||||
|
||||
Then run the following
|
||||
```bash
|
||||
cd docker/federation
|
||||
./run-federation-test.bash -yarn
|
||||
./start-local-instances.bash
|
||||
```
|
||||
|
||||
The federation test sets up 3 instances:
|
||||
The federation test sets up 5 instances:
|
||||
|
||||
Instance / Username | Location
|
||||
--- | ---
|
||||
lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540)
|
||||
lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550)
|
||||
lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560)
|
||||
Instance | Username | Location | Notes
|
||||
--- | --- | --- | ---
|
||||
lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | federated with all other instances
|
||||
lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | federated with all other instances
|
||||
lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | federated with all other instances
|
||||
lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | only allows federation with lemmy-beta
|
||||
lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | uses blocklist, has lemmy-alpha blocked
|
||||
|
||||
You can log into each using the instance name, and `lemmy` as the password, IE (`lemmy_alpha`, `lemmy`).
|
||||
|
||||
To start federation between instances, visit one of them and search for a user, community or post, like this:
|
||||
- `!main@lemmy-alpha:8540`
|
||||
- `http://lemmy-beta:8550/post/3`
|
||||
- `@lemmy-gamma@lemmy-gamma:8560`
|
||||
|
||||
Firefox containers are a good way to test them interacting.
|
||||
|
||||
## Integration tests
|
||||
|
@ -40,8 +45,8 @@ Firefox containers are a good way to test them interacting.
|
|||
To run a suite of suite of federation integration tests:
|
||||
|
||||
```bash
|
||||
cd docker/federation-test
|
||||
./run-tests.sh
|
||||
cd docker/federation
|
||||
./run-tests.bash
|
||||
```
|
||||
|
||||
## Running on a server
|
||||
|
|
Loading…
Reference in a new issue