started rebased build - using main dockerfile from soapbox repo
This commit is contained in:
parent
8af7f65170
commit
99f0259867
15 changed files with 87 additions and 250 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
static
|
||||||
|
uploads
|
||||||
|
postgres
|
||||||
|
build
|
||||||
|
soapbox.zip
|
3
00-create-pod.sh
Normal file → Executable file
3
00-create-pod.sh
Normal file → Executable file
|
@ -6,7 +6,6 @@ touch config.exs
|
||||||
chown -R 911:911 ./uploads
|
chown -R 911:911 ./uploads
|
||||||
|
|
||||||
podman pod create \
|
podman pod create \
|
||||||
--name pleroma-pod \
|
--name rebased-pod \
|
||||||
-p 4000:4000
|
-p 4000:4000
|
||||||
|
|
||||||
bash ./10-create-db.sh
|
|
||||||
|
|
14
10-build-rebased.sh
Executable file
14
10-build-rebased.sh
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./script_config.sh
|
||||||
|
|
||||||
|
if [ ! -d ./build ]; then
|
||||||
|
git clone https://gitlab.com/soapbox-pub/rebased.git ./build
|
||||||
|
cd ./build
|
||||||
|
else
|
||||||
|
cd ./build
|
||||||
|
git pull
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman build -f Dockerfile --build-arg="BUILD_DATE=$DATE" --build-arg="VCS_REF=$REBASED_VER" -t $REBASED_IMG
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
first=false
|
|
||||||
if [[ ! -d ./postgres ]]; then
|
|
||||||
mkdir ./postgres
|
|
||||||
$first=true
|
|
||||||
|
|
||||||
fi
|
|
||||||
podman run -d \
|
|
||||||
--name pleroma-db \
|
|
||||||
--pod pleroma-pod \
|
|
||||||
-e POSTGRES_USER=pleroma \
|
|
||||||
-e POSTGRES_PASSWORD=CHANGHEME \
|
|
||||||
-e POSTGRES_DB=pleroma \
|
|
||||||
-v ./postgres:/var/lib/postgresql/data \
|
|
||||||
postgres:12.1-alpine
|
|
||||||
|
|
||||||
if [[ $first == true ]]; then
|
|
||||||
podman exec -i pleroma-db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS citext;"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
commit="$1"
|
|
||||||
if [[ "$1" == "" ]]; then
|
|
||||||
echo "No commit ID provided"
|
|
||||||
$commit="develop"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
dt=$(date +"%Y%m%d")
|
|
||||||
podman build -f Containerfile --build-arg="PLEROMA_VER=$commit" -t pleroma:run-$dt-$commit
|
|
15
20-create-db.sh
Executable file
15
20-create-db.sh
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./script_config.sh
|
||||||
|
|
||||||
|
mkdir ./postgres -p
|
||||||
|
|
||||||
|
podman run -d \
|
||||||
|
--name rebased-db \
|
||||||
|
--pod rebased-pod \
|
||||||
|
-e POSTGRES_USER=$PG_USER \
|
||||||
|
-e POSTGRES_PASSWORD=$PG_PASS \
|
||||||
|
-e POSTGRES_DB=$PG_NAME \
|
||||||
|
-v ./postgres:/var/lib/postgresql/data \
|
||||||
|
postgres:14.6-alpine
|
||||||
|
|
28
30-run-rebased.sh
Executable file
28
30-run-rebased.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./script_config.sh
|
||||||
|
|
||||||
|
echo Stopping old `rebased-web` container...
|
||||||
|
podman stop rebased-web
|
||||||
|
podman rm rebased-web
|
||||||
|
|
||||||
|
echo Creating new `rebased-web` container...
|
||||||
|
podman run -d \
|
||||||
|
--name rebased-web \
|
||||||
|
--pod rebased-pod \
|
||||||
|
-v ./uploads:/var/lib/pleroma/uploads:z \
|
||||||
|
-v ./static:/var/lib/pleroma/static:z \
|
||||||
|
-v ./config:/var/lib/pleroma/config:z \
|
||||||
|
-v ./config.exs:/etc/pleroma/config.exs:ro \
|
||||||
|
-e DOMAIN=social.example.com \
|
||||||
|
-e INSTANCE_NAME=rebased \
|
||||||
|
-e ADMIN_EMAIL=admin@example.com \
|
||||||
|
-e NOTIFY_EMAIL=notify@example.com \
|
||||||
|
-e DB_USER=rebased \
|
||||||
|
-e DB_PASS=rebased \
|
||||||
|
-e DB_NAME=rebased \
|
||||||
|
-e DB_HOST=localhost \
|
||||||
|
-e POSTGRES_HOST=localhost \
|
||||||
|
$REBASED_IMG
|
||||||
|
|
||||||
|
|
5
35-gen-config.sh
Executable file
5
35-gen-config.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./script_config.sh
|
||||||
|
|
||||||
|
podman exec -it rebased-web /opt/pleroma/bin/pleroma_ctl instance gen
|
8
40-install-soapbox.sh
Executable file
8
40-install-soapbox.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
curl -L https://gitlab.com/soapbox-pub/soapbox/-/jobs/artifacts/develop/download?job=build-production -o soapbox.zip
|
||||||
|
unzip soapbox.zip -d ./static
|
||||||
|
mv ./static/static/* ./static/
|
||||||
|
mv ./static/static/.* ./static/
|
||||||
|
rm ./static/static -r
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
if [[ $1 == "" ]]; then
|
|
||||||
echo "No Image tag provided"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo Creating directories...
|
|
||||||
mkdir ./postgres
|
|
||||||
mkdir ./uploads
|
|
||||||
mkdir ./static
|
|
||||||
touch config.exs
|
|
||||||
chown -R 911:911 ./uploads
|
|
||||||
|
|
||||||
echo Stopping old `pleroma-web` container...
|
|
||||||
podman stop pleroma-web
|
|
||||||
podman rm pleroma-web
|
|
||||||
|
|
||||||
echo Creating new `pleroma-web` container...
|
|
||||||
podman run -d \
|
|
||||||
--name pleroma-web \
|
|
||||||
--pod pleroma-pod \
|
|
||||||
-v ./uploads:/var/lib/pleroma/uploads:z \
|
|
||||||
-v ./static:/var/lib/pleroma/static:z \
|
|
||||||
-v ./config.exs:/etc/pleroma/config.exs:ro \
|
|
||||||
-e DOMAIN=social.example.com \
|
|
||||||
-e INSTANCE_NAME=Pleroma \
|
|
||||||
-e ADMIN_EMAIL=admin@example.com \
|
|
||||||
-e NOTIFY_EMAIL=notify@example.com \
|
|
||||||
-e DB_USER=pleroma \
|
|
||||||
-e DB_PASS=pleroma \
|
|
||||||
-e DB_NAME=pleroma \
|
|
||||||
-e DB_HOST=localhost \
|
|
||||||
-e POSTGRES_HOST=localhost \
|
|
||||||
pleroma:$1
|
|
||||||
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
FROM elixir:1.11.4-alpine
|
|
||||||
|
|
||||||
ENV UID=911 GID=911 \
|
|
||||||
MIX_ENV=prod
|
|
||||||
|
|
||||||
ARG PLEROMA_VER=develop
|
|
||||||
ENV UID=911 GID=911 MIX_ENV=prod
|
|
||||||
|
|
||||||
ENV MIX_ENV=prod
|
|
||||||
|
|
||||||
RUN echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories \
|
|
||||||
&& apk update \
|
|
||||||
&& apk add git gcc g++ musl-dev make cmake file-dev \
|
|
||||||
exiftool imagemagick libmagic ncurses postgresql-client ffmpeg
|
|
||||||
|
|
||||||
RUN addgroup -g ${GID} pleroma \
|
|
||||||
&& adduser -h /pleroma -s /bin/false -D -G pleroma -u ${UID} pleroma
|
|
||||||
|
|
||||||
ARG DATA=/var/lib/pleroma
|
|
||||||
RUN mkdir -p /etc/pleroma \
|
|
||||||
&& chown -R pleroma /etc/pleroma \
|
|
||||||
&& mkdir -p ${DATA}/uploads \
|
|
||||||
&& mkdir -p ${DATA}/static \
|
|
||||||
&& chown -R pleroma ${DATA}
|
|
||||||
|
|
||||||
USER pleroma
|
|
||||||
WORKDIR /pleroma
|
|
||||||
|
|
||||||
RUN git clone -b develop https://git.pleroma.social/pleroma/pleroma.git /pleroma \
|
|
||||||
&& git checkout ${PLEROMA_VER}
|
|
||||||
|
|
||||||
RUN echo "import Mix.Config" > config/prod.secret.exs \
|
|
||||||
&& mix local.hex --force \
|
|
||||||
&& mix local.rebar --force \
|
|
||||||
&& mix deps.get --only prod \
|
|
||||||
&& mkdir release \
|
|
||||||
&& mix release --path /pleroma
|
|
||||||
|
|
||||||
COPY ./config.exs /etc/pleroma/config.exs
|
|
||||||
|
|
||||||
EXPOSE 4000
|
|
||||||
|
|
||||||
ENTRYPOINT ["/pleroma/docker-entrypoint.sh"]
|
|
76
config.exs
76
config.exs
|
@ -1,76 +0,0 @@
|
||||||
import Config
|
|
||||||
|
|
||||||
config :pleroma, Pleroma.Web.Endpoint,
|
|
||||||
url: [host: System.get_env("DOMAIN", "localhost"), scheme: "https", port: 443],
|
|
||||||
http: [ip: {0, 0, 0, 0}, port: 4000]
|
|
||||||
|
|
||||||
config :pleroma, :instance,
|
|
||||||
name: System.get_env("INSTANCE_NAME", "Pleroma"),
|
|
||||||
email: System.get_env("ADMIN_EMAIL"),
|
|
||||||
notify_email: System.get_env("NOTIFY_EMAIL"),
|
|
||||||
limit: 5000,
|
|
||||||
registrations_open: false,
|
|
||||||
federating: true,
|
|
||||||
healthcheck: true
|
|
||||||
|
|
||||||
config :pleroma, configurable_from_database: true
|
|
||||||
|
|
||||||
config :pleroma, :media_proxy,
|
|
||||||
enabled: false,
|
|
||||||
redirect_on_failure: true,
|
|
||||||
base_url: "https://example.tld"
|
|
||||||
|
|
||||||
config :pleroma, Pleroma.Repo,
|
|
||||||
adapter: Ecto.Adapters.Postgres,
|
|
||||||
username: System.get_env("DB_USER", "pleroma"),
|
|
||||||
password: System.fetch_env!("DB_PASS"),
|
|
||||||
database: System.get_env("DB_NAME", "pleroma"),
|
|
||||||
hostname: System.get_env("DB_HOST", "localhost"),
|
|
||||||
pool_size: 10
|
|
||||||
|
|
||||||
# Configure web push notifications
|
|
||||||
config :web_push_encryption, :vapid_details, subject: "mailto:#{System.get_env("NOTIFY_EMAIL")}"
|
|
||||||
|
|
||||||
config :pleroma, :database, rum_enabled: false
|
|
||||||
config :pleroma, :instance, static_dir: "/var/lib/pleroma/static"
|
|
||||||
config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads"
|
|
||||||
|
|
||||||
# We can't store the secrets in this file, since this is baked into the docker image
|
|
||||||
if not File.exists?("/var/lib/pleroma/secret.exs") do
|
|
||||||
secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
|
|
||||||
signing_salt = :crypto.strong_rand_bytes(8) |> Base.encode64() |> binary_part(0, 8)
|
|
||||||
{web_push_public_key, web_push_private_key} = :crypto.generate_key(:ecdh, :prime256v1)
|
|
||||||
|
|
||||||
secret_file =
|
|
||||||
EEx.eval_string(
|
|
||||||
"""
|
|
||||||
import Config
|
|
||||||
|
|
||||||
config :pleroma, Pleroma.Web.Endpoint,
|
|
||||||
secret_key_base: "<%= secret %>",
|
|
||||||
signing_salt: "<%= signing_salt %>"
|
|
||||||
|
|
||||||
config :web_push_encryption, :vapid_details,
|
|
||||||
public_key: "<%= web_push_public_key %>",
|
|
||||||
private_key: "<%= web_push_private_key %>"
|
|
||||||
""",
|
|
||||||
secret: secret,
|
|
||||||
signing_salt: signing_salt,
|
|
||||||
web_push_public_key: Base.url_encode64(web_push_public_key, padding: false),
|
|
||||||
web_push_private_key: Base.url_encode64(web_push_private_key, padding: false)
|
|
||||||
)
|
|
||||||
|
|
||||||
File.write("/var/lib/pleroma/secret.exs", secret_file)
|
|
||||||
end
|
|
||||||
|
|
||||||
import_config("/var/lib/pleroma/secret.exs")
|
|
||||||
|
|
||||||
# For additional user config
|
|
||||||
if File.exists?("/var/lib/pleroma/config.exs"),
|
|
||||||
do: import_config("/var/lib/pleroma/config.exs"),
|
|
||||||
else:
|
|
||||||
File.write("/var/lib/pleroma/config.exs", """
|
|
||||||
import Config
|
|
||||||
|
|
||||||
# For additional configuration outside of environmental variables
|
|
||||||
""")
|
|
|
@ -1,62 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
mkdir ./postgres
|
|
||||||
mkdir ./uploads
|
|
||||||
mkdir ./static
|
|
||||||
touch config.exs
|
|
||||||
chown -R 911:911 ./uploads
|
|
||||||
|
|
||||||
podman pod create \
|
|
||||||
--name pleroma-pod \
|
|
||||||
-p 4000:4000
|
|
||||||
|
|
||||||
podman run -d \
|
|
||||||
--name pleroma-db \
|
|
||||||
--pod pleroma-pod \
|
|
||||||
-e POSTGRES_USER=pleroma \
|
|
||||||
-e POSTGRES_PASSWORD=CHANGHEME \
|
|
||||||
-e POSTGRES_DB=pleroma \
|
|
||||||
-v ./postgres:/var/lib/postgresql/data \
|
|
||||||
postgres:12.1-alpine
|
|
||||||
|
|
||||||
if [[ $1 == "db-setup" ]]; then
|
|
||||||
podman exec -i pleroma-db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS citext;"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
runvars="pleroma:"
|
|
||||||
runmode="-d"
|
|
||||||
if [[ $1 == "build-setup" ]]; then
|
|
||||||
podman build -f Dockerfile -t pleroma:$1
|
|
||||||
runvars=$runvars$1" mix ecto.migrate"
|
|
||||||
runmode="--rm"
|
|
||||||
elif [[ $1 == "final-build" ]]; then
|
|
||||||
podman build -f Dockerfile -t pleroma:run
|
|
||||||
runvars=$runvars"run"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
podman run $runmode \
|
|
||||||
--name pleroma-web \
|
|
||||||
--pod pleroma-pod \
|
|
||||||
-v ./uploads:/var/lib/pleroma/uploads \
|
|
||||||
-v ./static:/var/lib/pleroma/static \
|
|
||||||
-v ./config.exs:/etc/pleroma/config.exs:ro \
|
|
||||||
-e DOMAIN=example.tld \
|
|
||||||
-e INSTANCE_NAME=Pleroma \
|
|
||||||
-e ADMIN_EMAIL=admin@example.tld \
|
|
||||||
-e NOTIFY_EMAIL=notify@example.tld \
|
|
||||||
-e DB_USER=pleroma \
|
|
||||||
-e DB_PASS=CHANGEME \
|
|
||||||
-e DB_NAME=pleroma \
|
|
||||||
-e DB_HOST=localhost \
|
|
||||||
-e POSTGRES_HOST=localhost \
|
|
||||||
$runvars
|
|
||||||
|
|
||||||
if [[ $1 == "build-setup" ]]; then
|
|
||||||
podman exec pleroma-web /pleroma/bin/pleroma_ctl config migrate_to_db
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $1 == "gen-keypair" ]]; then
|
|
||||||
podman exec pleroma-web mix web_push.gen.keypair
|
|
||||||
fi
|
|
11
script_config.sh
Normal file
11
script_config.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DATE=$(date +"%Y-%m-%d")
|
||||||
|
PG_USER=rebased
|
||||||
|
PG_PASS=rebased
|
||||||
|
PG_HOST=localhost
|
||||||
|
PG_NAME=rebased
|
||||||
|
REBASED_VER=develop
|
||||||
|
|
||||||
|
REBASED_IMG="rebased-$REBASED_VER-$DATE"
|
||||||
|
echo $REBASED_IMG
|
Loading…
Reference in a new issue