From a084b311b2ef5d7f302550baa66565fdd2597375 Mon Sep 17 00:00:00 2001 From: Kegan Myers Date: Sun, 23 Jul 2023 14:58:54 -0500 Subject: [PATCH] rework to remove need to build multiple container images; delete old docker build stuff; use my fork of akkoma --- .build.sh | 9 ++++++ .dockerignore | 4 --- Dockerfile | 24 ---------------- build.sh | 18 +++++++----- prod.exs | 74 ------------------------------------------------- prod.secret.exs | 0 6 files changed, 20 insertions(+), 109 deletions(-) create mode 100644 .build.sh delete mode 100644 .dockerignore delete mode 100644 Dockerfile delete mode 100644 prod.exs create mode 100644 prod.secret.exs diff --git a/.build.sh b/.build.sh new file mode 100644 index 0000000..0bffa8a --- /dev/null +++ b/.build.sh @@ -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 diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index c9db6d2..0000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -* -!.git -!akkoma -!prod.exs diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1237a04..0000000 --- a/Dockerfile +++ /dev/null @@ -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 diff --git a/build.sh b/build.sh index ccca081..d20f519 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/bash set -Eeuxo pipefail -AKKOMA_COMMIT="9d7c877de049303a4d4d8f5ecaac7da94ca59ebb" +AKKOMA_COMMIT="dd17e0353a9efd66b19803d066ec45fa7d155886" LOCAL_COMMIT=$(git rev-parse HEAD) AKKOMA_BASE_IMAGE="registry.nrd.li/nrdli/akkoma-base:${AKKOMA_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 rm -rf akkoma fi -git clone https://akkoma.dev/AkkomaGang/akkoma.git akkoma +git clone https://git.keganmyers.com/nrd.li/akkoma.git akkoma pushd akkoma git fetch --all git checkout "${AKKOMA_COMMIT}" @@ -25,9 +25,13 @@ docker build \ docker push "${AKKOMA_BASE_IMAGE}" popd +chown -R 1000:1000 ./akkoma + # run install steps for akkoma -docker build \ - -t "${AKKOMA_FINAL_IMAGE}" \ - --build-arg "AKKOMA_COMMIT=${AKKOMA_COMMIT}" \ - . -docker push "${AKKOMA_FINAL_IMAGE}" +docker run --rm \ + -itv "$(pwd)/akkoma:/opt/akkoma" \ + -v "$(pwd)/prod.secret.exs:/config/prod.secret.exs" \ + -v "$(pwd)/.build.sh:/build.sh" \ + --entrypoint "" \ + /build.sh +# docker push "${AKKOMA_FINAL_IMAGE}" diff --git a/prod.exs b/prod.exs deleted file mode 100644 index 4558e16..0000000 --- a/prod.exs +++ /dev/null @@ -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") diff --git a/prod.secret.exs b/prod.secret.exs new file mode 100644 index 0000000..e69de29