rework to remove need to build multiple container images; delete old docker build stuff; use my fork of akkoma
This commit is contained in:
parent
33e8897b79
commit
a084b311b2
9
.build.sh
Normal file
9
.build.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -Eeuxo pipefail
|
||||||
|
|
||||||
|
# mix local.hex --force
|
||||||
|
# mix local.rebar --force
|
||||||
|
mix deps.get
|
||||||
|
mix compile
|
||||||
|
mix pleroma.frontend install pleroma-fe --ref stable
|
||||||
|
mix pleroma.frontend install admin-fe --ref stable
|
|
@ -1,4 +0,0 @@
|
||||||
*
|
|
||||||
!.git
|
|
||||||
!akkoma
|
|
||||||
!prod.exs
|
|
24
Dockerfile
24
Dockerfile
|
@ -1,24 +0,0 @@
|
||||||
ARG AKKOMA_COMMIT
|
|
||||||
FROM registry.nrd.li/nrdli/akkoma-base:${AKKOMA_COMMIT}
|
|
||||||
|
|
||||||
ENV PROD_SECRET_FILE=/config/prod.secret.exs
|
|
||||||
|
|
||||||
USER root
|
|
||||||
RUN mkdir -p "$(dirname "${PROD_SECRET_FILE}")" && \
|
|
||||||
touch "${PROD_SECRET_FILE}" && \
|
|
||||||
chown -R 1000:1000 "$(dirname "${PROD_SECRET_FILE}")" && \
|
|
||||||
rm -rf /opt/akkoma && \
|
|
||||||
cd /opt && \
|
|
||||||
git clone https://akkoma.dev/AkkomaGang/akkoma.git akkoma && \
|
|
||||||
chown -R akkoma: /opt/akkoma
|
|
||||||
|
|
||||||
ADD --chown=akkoma:akkoma prod.exs /opt/akkoma/config/prod.exs
|
|
||||||
|
|
||||||
USER akkoma
|
|
||||||
WORKDIR /opt/akkoma
|
|
||||||
RUN git fetch --all && git checkout $AKKOMA_COMMIT
|
|
||||||
RUN mix local.hex --force && mix local.rebar --force
|
|
||||||
RUN mix deps.get
|
|
||||||
RUN mix compile
|
|
||||||
RUN mix pleroma.frontend install pleroma-fe --ref stable
|
|
||||||
RUN mix pleroma.frontend install admin-fe --ref stable
|
|
18
build.sh
18
build.sh
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -Eeuxo pipefail
|
set -Eeuxo pipefail
|
||||||
|
|
||||||
AKKOMA_COMMIT="9d7c877de049303a4d4d8f5ecaac7da94ca59ebb"
|
AKKOMA_COMMIT="dd17e0353a9efd66b19803d066ec45fa7d155886"
|
||||||
LOCAL_COMMIT=$(git rev-parse HEAD)
|
LOCAL_COMMIT=$(git rev-parse HEAD)
|
||||||
AKKOMA_BASE_IMAGE="registry.nrd.li/nrdli/akkoma-base:${AKKOMA_COMMIT}"
|
AKKOMA_BASE_IMAGE="registry.nrd.li/nrdli/akkoma-base:${AKKOMA_COMMIT}"
|
||||||
AKKOMA_FINAL_IMAGE="registry.nrd.li/nrdli/akkoma:${LOCAL_COMMIT}"
|
AKKOMA_FINAL_IMAGE="registry.nrd.li/nrdli/akkoma:${LOCAL_COMMIT}"
|
||||||
|
@ -10,7 +10,7 @@ AKKOMA_FINAL_IMAGE="registry.nrd.li/nrdli/akkoma:${LOCAL_COMMIT}"
|
||||||
if [ -d akkoma ]; then
|
if [ -d akkoma ]; then
|
||||||
rm -rf akkoma
|
rm -rf akkoma
|
||||||
fi
|
fi
|
||||||
git clone https://akkoma.dev/AkkomaGang/akkoma.git akkoma
|
git clone https://git.keganmyers.com/nrd.li/akkoma.git akkoma
|
||||||
pushd akkoma
|
pushd akkoma
|
||||||
git fetch --all
|
git fetch --all
|
||||||
git checkout "${AKKOMA_COMMIT}"
|
git checkout "${AKKOMA_COMMIT}"
|
||||||
|
@ -25,9 +25,13 @@ docker build \
|
||||||
docker push "${AKKOMA_BASE_IMAGE}"
|
docker push "${AKKOMA_BASE_IMAGE}"
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
chown -R 1000:1000 ./akkoma
|
||||||
|
|
||||||
# run install steps for akkoma
|
# run install steps for akkoma
|
||||||
docker build \
|
docker run --rm \
|
||||||
-t "${AKKOMA_FINAL_IMAGE}" \
|
-itv "$(pwd)/akkoma:/opt/akkoma" \
|
||||||
--build-arg "AKKOMA_COMMIT=${AKKOMA_COMMIT}" \
|
-v "$(pwd)/prod.secret.exs:/config/prod.secret.exs" \
|
||||||
.
|
-v "$(pwd)/.build.sh:/build.sh" \
|
||||||
docker push "${AKKOMA_FINAL_IMAGE}"
|
--entrypoint "" \
|
||||||
|
/build.sh
|
||||||
|
# docker push "${AKKOMA_FINAL_IMAGE}"
|
||||||
|
|
74
prod.exs
74
prod.exs
|
@ -1,74 +0,0 @@
|
||||||
import Config
|
|
||||||
|
|
||||||
# For production, we often load configuration from external
|
|
||||||
# sources, such as your system environment. For this reason,
|
|
||||||
# you won't find the :http configuration below, but set inside
|
|
||||||
# Pleroma.Web.Endpoint.load_from_system_env/1 dynamically.
|
|
||||||
# Any dynamic configuration should be moved to such function.
|
|
||||||
#
|
|
||||||
# Don't forget to configure the url host to something meaningful,
|
|
||||||
# Phoenix uses this information when generating URLs.
|
|
||||||
#
|
|
||||||
# Finally, we also include the path to a cache manifest
|
|
||||||
# containing the digested version of static files. This
|
|
||||||
# manifest is generated by the mix phoenix.digest task
|
|
||||||
# which you typically run after static files are built.
|
|
||||||
config :pleroma, Pleroma.Web.Endpoint,
|
|
||||||
http: [port: 4000],
|
|
||||||
protocol: "http"
|
|
||||||
|
|
||||||
config :phoenix, serve_endpoints: true
|
|
||||||
|
|
||||||
# Do not print debug messages in production
|
|
||||||
config :logger, :console, level: :info
|
|
||||||
config :logger, :ex_syslogger, level: :info
|
|
||||||
|
|
||||||
# ## SSL Support
|
|
||||||
#
|
|
||||||
# To get SSL working, you will need to add the `https` key
|
|
||||||
# to the previous section and set your `:url` port to 443:
|
|
||||||
#
|
|
||||||
# config :pleroma, Pleroma.Web.Endpoint,
|
|
||||||
# ...
|
|
||||||
# url: [host: "example.com", port: 443],
|
|
||||||
# https: [:inet6,
|
|
||||||
# port: 443,
|
|
||||||
# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
|
|
||||||
# certfile: System.get_env("SOME_APP_SSL_CERT_PATH")]
|
|
||||||
#
|
|
||||||
# Where those two env variables return an absolute path to
|
|
||||||
# the key and cert in disk or a relative path inside priv,
|
|
||||||
# for example "priv/ssl/server.key".
|
|
||||||
#
|
|
||||||
# We also recommend setting `force_ssl`, ensuring no data is
|
|
||||||
# ever sent via http, always redirecting to https:
|
|
||||||
#
|
|
||||||
# config :pleroma, Pleroma.Web.Endpoint,
|
|
||||||
# force_ssl: [hsts: true]
|
|
||||||
#
|
|
||||||
# Check `Plug.SSL` for all available options in `force_ssl`.
|
|
||||||
|
|
||||||
# ## Using releases
|
|
||||||
#
|
|
||||||
# If you are doing OTP releases, you need to instruct Phoenix
|
|
||||||
# to start the server for all endpoints:
|
|
||||||
#
|
|
||||||
# config :phoenix, :serve_endpoints, true
|
|
||||||
#
|
|
||||||
# Alternatively, you can configure exactly which server to
|
|
||||||
# start per endpoint:
|
|
||||||
#
|
|
||||||
# config :pleroma, Pleroma.Web.Endpoint, server: true
|
|
||||||
#
|
|
||||||
|
|
||||||
# Finally import the config/prod.secret.exs
|
|
||||||
# which should be versioned separately.
|
|
||||||
if File.exists?(System.get_env("PROD_SECRET_FILE", "./config/prod.secret.exs")) do
|
|
||||||
import_config System.get_env("PROD_SECRET_FILE", "./config/prod.secret.exs")
|
|
||||||
else
|
|
||||||
"`config/prod.secret.exs` not found. You may want to create one by running `mix pleroma.instance gen`"
|
|
||||||
|> IO.warn([])
|
|
||||||
end
|
|
||||||
|
|
||||||
if File.exists?("./config/prod.exported_from_db.secret.exs"),
|
|
||||||
do: import_config("prod.exported_from_db.secret.exs")
|
|
0
prod.secret.exs
Normal file
0
prod.secret.exs
Normal file
Loading…
Reference in a new issue