summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorRiley <asonix@asonix.dog>2020-07-01 07:54:29 -0500
committerGitHub <noreply@github.com>2020-07-01 08:54:29 -0400
commita074564458b8a108b77d98e5e8ce24168656763a (patch)
tree8cfb4e463b6b2dbd3c4b3ac2f312a42542f38d64 /docker
parent4c1cb5999cad496714cec67f101be38cd281d416 (diff)
Federation async (#848)
* Asyncify more * I guess these changed * Clean PR a bit * Convert more away from failure error * config changes for testing federation * It was DNS So actix-web's client relies on TRust DNS Resolver to figure out where to send data, but TRust DNS Resolver seems to not play nice with docker, which expressed itself as not resolving the name to an IP address _the first time_ when making a request. The fix was literally to make the request again (which I limited to 3 times total, and not exceeding the request timeout in total) * Only retry for connecterror Since TRust DNS Resolver was causing ConnectError::Timeout, this change limits the retry to only this error, returning immediately for any other error * Use http sig norm 0.4.0-alpha for actix-web 3.0 support * Blocking function, retry http requests * cargo +nightly fmt * Only create one pictrs dir * Don't yarn build * cargo +nightly fmt
Diffstat (limited to 'docker')
-rw-r--r--docker/dev/docker-compose.yml2
-rwxr-xr-xdocker/federation-test/run-tests.sh14
-rwxr-xr-xdocker/federation-test/servers.sh19
-rwxr-xr-xdocker/federation-test/tests.sh10
-rw-r--r--docker/federation/Dockerfile2
-rw-r--r--docker/federation/docker-compose.yml56
-rw-r--r--docker/federation/nginx.conf12
7 files changed, 70 insertions, 45 deletions
diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml
index bdcb4308..51a3ecda 100644
--- a/docker/dev/docker-compose.yml
+++ b/docker/dev/docker-compose.yml
@@ -20,6 +20,8 @@ services:
postgres:
image: postgres:12-alpine
+ ports:
+ - "127.0.0.1:5432:5432"
environment:
- POSTGRES_USER=lemmy
- POSTGRES_PASSWORD=password
diff --git a/docker/federation-test/run-tests.sh b/docker/federation-test/run-tests.sh
index fdb0e129..57c6cc8f 100755
--- a/docker/federation-test/run-tests.sh
+++ b/docker/federation-test/run-tests.sh
@@ -5,17 +5,21 @@ pushd ../../server/
cargo build
popd
+pushd ../../ui
+yarn
+popd
+
+mkdir -p volumes/pictrs_{alpha,beta,gamma}
+sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma}
+
sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
-for Item in alpha beta gamma ; do
- sudo mkdir -p volumes/pictrs_$Item
- sudo chown -R 991:991 volumes/pictrs_$Item
-done
+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
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
diff --git a/docker/federation-test/servers.sh b/docker/federation-test/servers.sh
new file mode 100755
index 00000000..36f10cd8
--- /dev/null
+++ b/docker/federation-test/servers.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -e
+
+sudo rm -rf volumes
+
+pushd ../../server/
+cargo build
+popd
+
+pushd ../../ui
+yarn
+popd
+
+mkdir -p volumes/pictrs_{alpha,beta,gamma}
+sudo chown -R 991:991 volumes/pictrs_{alpha,beta,gamma}
+
+sudo docker build ../../ --file ../federation/Dockerfile --tag lemmy-federation:latest
+
+sudo docker-compose --file ../federation/docker-compose.yml --project-directory . up
diff --git a/docker/federation-test/tests.sh b/docker/federation-test/tests.sh
new file mode 100755
index 00000000..2e88ffb2
--- /dev/null
+++ b/docker/federation-test/tests.sh
@@ -0,0 +1,10 @@
+#!/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
+yarn api-test || true
+popd
diff --git a/docker/federation/Dockerfile b/docker/federation/Dockerfile
index ec7bf2d2..caf08175 100644
--- a/docker/federation/Dockerfile
+++ b/docker/federation/Dockerfile
@@ -3,7 +3,7 @@ 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
+ && adduser --gecos "" --disabled-password --shell /bin/sh -u 1001 --ingroup lemmy lemmy
# Copy resources
COPY server/config/defaults.hjson /app/config/defaults.hjson
diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml
index d5f9a522..cbc648e6 100644
--- a/docker/federation/docker-compose.yml
+++ b/docker/federation/docker-compose.yml
@@ -12,28 +12,33 @@ services:
- ../federation/nginx.conf:/etc/nginx/nginx.conf
restart: on-failure
depends_on:
- - lemmy_alpha
- - pictrs_alpha
- - lemmy_beta
- - pictrs_beta
- - lemmy_gamma
- - pictrs_gamma
+ - lemmy-alpha
+ - pictrs
+ - lemmy-beta
+ - lemmy-gamma
- iframely
- lemmy_alpha:
+ pictrs:
+ restart: always
+ image: asonix/pictrs:v0.1.13-r0
+ user: 991:991
+ volumes:
+ - ./volumes/pictrs_alpha:/mnt
+
+ lemmy-alpha:
image: lemmy-federation:latest
environment:
- - LEMMY_HOSTNAME=lemmy_alpha:8540
+ - 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_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
+ - LEMMY_SETUP__SITE_NAME=lemmy-alpha
- RUST_BACKTRACE=1
- RUST_LOG=debug
depends_on:
@@ -46,26 +51,21 @@ services:
- POSTGRES_DB=lemmy
volumes:
- ./volumes/postgres_alpha:/var/lib/postgresql/data
- pictrs_alpha:
- image: asonix/pictrs:v0.1.13-r0
- user: 991:991
- volumes:
- - ./volumes/pictrs_alpha:/mnt
- lemmy_beta:
+ lemmy-beta:
image: lemmy-federation:latest
environment:
- - LEMMY_HOSTNAME=lemmy_beta:8550
+ - LEMMY_HOSTNAME=lemmy-beta:8550
- LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_beta: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_alpha,lemmy_gamma
+ - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-gamma
- LEMMY_PORT=8550
- LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta
- LEMMY_SETUP__ADMIN_PASSWORD=lemmy
- - LEMMY_SETUP__SITE_NAME=lemmy_beta
+ - LEMMY_SETUP__SITE_NAME=lemmy-beta
- RUST_BACKTRACE=1
- RUST_LOG=debug
depends_on:
@@ -78,26 +78,21 @@ services:
- POSTGRES_DB=lemmy
volumes:
- ./volumes/postgres_beta:/var/lib/postgresql/data
- pictrs_beta:
- image: asonix/pictrs:v0.1.13-r0
- user: 991:991
- volumes:
- - ./volumes/pictrs_beta:/mnt
- lemmy_gamma:
+ lemmy-gamma:
image: lemmy-federation:latest
environment:
- - LEMMY_HOSTNAME=lemmy_gamma:8560
+ - LEMMY_HOSTNAME=lemmy-gamma:8560
- LEMMY_DATABASE_URL=postgres://lemmy:password@postgres_gamma: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_alpha,lemmy_beta
+ - LEMMY_FEDERATION__ALLOWED_INSTANCES=lemmy-alpha,lemmy-beta
- LEMMY_PORT=8560
- LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma
- LEMMY_SETUP__ADMIN_PASSWORD=lemmy
- - LEMMY_SETUP__SITE_NAME=lemmy_gamma
+ - LEMMY_SETUP__SITE_NAME=lemmy-gamma
- RUST_BACKTRACE=1
- RUST_LOG=debug
depends_on:
@@ -110,11 +105,6 @@ services:
- POSTGRES_DB=lemmy
volumes:
- ./volumes/postgres_gamma:/var/lib/postgresql/data
- pictrs_gamma:
- image: asonix/pictrs:v0.1.13-r0
- user: 991:991
- volumes:
- - ./volumes/pictrs_gamma:/mnt
iframely:
image: dogbin/iframely:latest
diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf
index 25160eb6..2093297e 100644
--- a/docker/federation/nginx.conf
+++ b/docker/federation/nginx.conf
@@ -12,7 +12,7 @@ http {
client_max_body_size 50M;
location / {
- proxy_pass http://lemmy_alpha:8540;
+ proxy_pass http://lemmy-alpha:8540;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -26,7 +26,7 @@ http {
# pict-rs images
location /pictrs {
location /pictrs/image {
- proxy_pass http://pictrs_alpha:8080/image;
+ proxy_pass http://pictrs:8080/image;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -52,7 +52,7 @@ http {
client_max_body_size 50M;
location / {
- proxy_pass http://lemmy_beta:8550;
+ proxy_pass http://lemmy-beta:8550;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -66,7 +66,7 @@ http {
# pict-rs images
location /pictrs {
location /pictrs/image {
- proxy_pass http://pictrs_beta:8080/image;
+ proxy_pass http://pictrs:8080/image;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -92,7 +92,7 @@ http {
client_max_body_size 50M;
location / {
- proxy_pass http://lemmy_gamma:8560;
+ proxy_pass http://lemmy-gamma:8560;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -106,7 +106,7 @@ http {
# pict-rs images
location /pictrs {
location /pictrs/image {
- proxy_pass http://pictrs_gamma:8080/image;
+ proxy_pass http://pictrs:8080/image;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;