summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/dev/docker-compose.yml2
-rwxr-xr-xdocker/dev/test_deploy.sh17
-rwxr-xr-xdocker/federation-test/run-tests.sh23
-rw-r--r--docker/federation/Dockerfile17
-rw-r--r--docker/federation/docker-compose.yml129
-rw-r--r--docker/federation/nginx.conf110
-rwxr-xr-xdocker/federation/run-federation-test.bash23
7 files changed, 314 insertions, 7 deletions
diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml
index 1702f66d..3fc94099 100644
--- a/docker/dev/docker-compose.yml
+++ b/docker/dev/docker-compose.yml
@@ -22,7 +22,7 @@ services:
- RUST_LOG=debug
volumes:
- ../lemmy.hjson:/config/config.hjson
- depends_on:
+ depends_on:
- postgres
- pictshare
- iframely
diff --git a/docker/dev/test_deploy.sh b/docker/dev/test_deploy.sh
index 1ae91f65..fb09e4f1 100755
--- a/docker/dev/test_deploy.sh
+++ b/docker/dev/test_deploy.sh
@@ -1,11 +1,16 @@
-#!/bin/sh
+#!/bin/bash
+set -e
+
+BRANCH=$1
+
+git checkout $BRANCH
+cd ../../
# 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..d8302ea7
--- /dev/null
+++ b/docker/federation/Dockerfile
@@ -0,0 +1,17 @@
+FROM ekidd/rust-musl-builder:1.38.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..3f986a81
--- /dev/null
+++ b/docker/federation/docker-compose.yml
@@ -0,0 +1,129 @@
+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
+ - pictshare_alpha
+ - lemmy_beta
+ - pictshare_beta
+ - lemmy_gamma
+ - pictshare_gamma
+ - iframely
+ restart: "always"
+
+ 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__INSTANCE_WHITELIST=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
+ - RUST_LOG=debug
+ restart: always
+ depends_on:
+ - postgres_alpha
+ postgres_alpha:
+ image: postgres:12-alpine
+ environment:
+ - POSTGRES_USER=lemmy
+ - POSTGRES_PASSWORD=password
+ - POSTGRES_DB=lemmy
+ volumes:
+ - ./volumes/postgres_alpha:/var/lib/postgresql/data
+ restart: always
+ pictshare_alpha:
+ image: shtripok/pictshare:latest
+ volumes:
+ - ./volumes/pictshare_alpha:/usr/share/nginx/html/data
+ restart: always
+
+ lemmy_beta:
+ image: lemmy-federation:latest
+ environment:
+ - 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__INSTANCE_WHITELIST=lemmy_alpha,lemmy_gamma
+ - LEMMY_PORT=8550
+ - LEMMY_SETUP__ADMIN_USERNAME=lemmy_beta
+ - LEMMY_SETUP__ADMIN_PASSWORD=lemmy
+ - LEMMY_SETUP__SITE_NAME=lemmy_beta
+ - RUST_BACKTRACE=1
+ - RUST_LOG=debug
+ restart: always
+ depends_on:
+ - postgres_beta
+ postgres_beta:
+ image: postgres:12-alpine
+ environment:
+ - POSTGRES_USER=lemmy
+ - POSTGRES_PASSWORD=password
+ - POSTGRES_DB=lemmy
+ volumes:
+ - ./volumes/postgres_beta:/var/lib/postgresql/data
+ restart: always
+ pictshare_beta:
+ image: shtripok/pictshare:latest
+ volumes:
+ - ./volumes/pictshare_beta:/usr/share/nginx/html/data
+ restart: always
+
+ lemmy_gamma:
+ image: lemmy-federation:latest
+ environment:
+ - 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__INSTANCE_WHITELIST=lemmy_alpha,lemmy_beta
+ - LEMMY_PORT=8560
+ - LEMMY_SETUP__ADMIN_USERNAME=lemmy_gamma
+ - LEMMY_SETUP__ADMIN_PASSWORD=lemmy
+ - LEMMY_SETUP__SITE_NAME=lemmy_gamma
+ - RUST_BACKTRACE=1
+ - RUST_LOG=debug
+ restart: always
+ depends_on:
+ - postgres_gamma
+ postgres_gamma:
+ image: postgres:12-alpine
+ environment:
+ - POSTGRES_USER=lemmy
+ - POSTGRES_PASSWORD=password
+ - POSTGRES_DB=lemmy
+ volumes:
+ - ./volumes/postgres_gamma:/var/lib/postgresql/data
+ restart: always
+ pictshare_gamma:
+ image: shtripok/pictshare:latest
+ volumes:
+ - ./volumes/pictshare_gamma:/usr/share/nginx/html/data
+ restart: always
+
+ iframely:
+ image: dogbin/iframely:latest
+ volumes:
+ - ../iframely.config.local.js:/iframely/config.local.js:ro
+ restart: always
diff --git a/docker/federation/nginx.conf b/docker/federation/nginx.conf
new file mode 100644
index 00000000..a73b0954
--- /dev/null
+++ b/docker/federation/nginx.conf
@@ -0,0 +1,110 @@
+events {
+ worker_connections 1024;
+}
+
+http {
+ server {
+ listen 8540;
+ server_name 127.0.0.1;
+ access_log off;
+
+ # Upload limit for pictshare
+ client_max_body_size 50M;
+
+ location / {
+ 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;
+
+ # WebSocket support
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ }
+
+ location /pictshare/ {
+ proxy_pass http://pictshare_alpha: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;
+ }
+
+ 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;
+ }
+ }
+
+ server {
+ listen 8550;
+ server_name 127.0.0.1;
+ access_log off;
+
+ # Upload limit for pictshare
+ client_max_body_size 50M;
+
+ location / {
+ 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;
+
+ # WebSocket support
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ }
+
+ location /pictshare/ {
+ proxy_pass http://pictshare_beta: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;
+ }
+
+ 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;
+ }
+ }
+
+ server {
+ listen 8560;
+ server_name 127.0.0.1;
+ access_log off;
+
+ # Upload limit for pictshare
+ client_max_body_size 50M;
+
+ location / {
+ 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;
+
+ # WebSocket support
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ }
+
+ location /pictshare/ {
+ proxy_pass http://pictshare_gamma: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;
+ }
+
+ 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;
+ }
+ }
+}
diff --git a/docker/federation/run-federation-test.bash b/docker/federation/run-federation-test.bash
new file mode 100755
index 00000000..206a3240
--- /dev/null
+++ b/docker/federation/run-federation-test.bash
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e
+
+# already start rust build in the background
+pushd ../../server/ || exit
+cargo build &
+popd || exit
+
+if [ "$1" = "-yarn" ]; 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
+
+sudo docker-compose up