From 167d936d533b4457e600873e1e6310a51e05821a Mon Sep 17 00:00:00 2001 From: Floatingghost Date: Sat, 30 Dec 2023 19:55:56 +0000 Subject: [PATCH] Testing stuff with podman --- Dockerfile | 51 +++++++++++++++++++----------- docker-compose.yml | 20 +++++++----- docker-entrypoint.sh | 4 +-- docker-resources/generate-instance | 16 ++++++++++ docker-resources/install-frontend | 3 ++ docker-resources/manage.sh | 2 +- 6 files changed, 67 insertions(+), 29 deletions(-) create mode 100755 docker-resources/generate-instance create mode 100644 docker-resources/install-frontend diff --git a/Dockerfile b/Dockerfile index aadd08f7a..f68befc05 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,35 @@ -FROM hexpm/elixir:1.15.4-erlang-26.0.2-alpine-3.18.2 +############################################## +# BUILD CONTAINER +############################################## + +FROM hexpm/elixir:1.16.0-erlang-26.2.1-alpine-3.18.4 as BUILD ENV MIX_ENV=prod + +RUN apk add git gcc g++ musl-dev make cmake file-dev exiftool ffmpeg imagemagick libmagic ncurses postgresql-client + +WORKDIR /src +ADD mix.exs mix.lock /src/ +ADD ./restarter /src/restarter/ +ADD ./priv /src/priv/ +ADD ./installation /src/installation/ +ADD ./rel /src/rel/ +ADD ./config /src/config/ +ADD ./docs /src/docs/ +ADD ./lib /src/lib/ + +RUN mix local.hex --force && \ + mix local.rebar --force + +RUN mix deps.get --only=prod + +RUN mix release --path /release + +################################################# +# RUNTIME CONTAINER +################################################# +FROM alpine:3.18 ENV ERL_EPMD_ADDRESS=127.0.0.1 - -ARG HOME=/opt/akkoma - LABEL org.opencontainers.image.title="akkoma" \ org.opencontainers.image.description="Akkoma for Docker" \ org.opencontainers.image.vendor="akkoma.dev" \ @@ -14,21 +39,11 @@ LABEL org.opencontainers.image.title="akkoma" \ org.opencontainers.image.revision=$VCS_REF \ org.opencontainers.image.created=$BUILD_DATE -RUN apk add git gcc g++ musl-dev make cmake file-dev exiftool ffmpeg imagemagick libmagic ncurses postgresql-client +RUN apk add ffmpeg imagemagick exiftool ncurses postgresql-client file-dev libmagic +COPY --from=BUILD /release /opt/akkoma/ +ADD ./docker-entrypoint.sh /opt/akkoma/ EXPOSE 4000 - -ARG UID=1000 -ARG GID=1000 -ARG UNAME=akkoma - -RUN addgroup -g $GID $UNAME -RUN adduser -u $UID -G $UNAME -D -h $HOME $UNAME - WORKDIR /opt/akkoma -USER $UNAME -RUN mix local.hex --force &&\ - mix local.rebar --force - -CMD ["/opt/akkoma/docker-entrypoint.sh"] +CMD [ "/opt/akkoma/docker-entrypoint.sh" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 58abf189d..394593c53 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,11 +2,9 @@ version: "3.7" services: db: - image: akkoma-db:latest - build: ./docker-resources/database + image: postgres:14 shm_size: 4gb restart: unless-stopped - user: ${DOCKER_USER} environment: { # This might seem insecure but is usually not a problem. # You should leave this at the "akkoma" default. @@ -21,16 +19,17 @@ services: env_file: - .env volumes: - - type: bind - source: ./pgdata - target: /var/lib/postgresql/data + - ./pgdata:/var/lib/postgresql/data:Z + akkoma: image: akkoma:latest - build: . restart: unless-stopped env_file: - .env + environment: { + "AKKOMA_CONFIG_PATH": "/opt/akkoma/config/docker-config.exs" + } links: - db ports: [ @@ -44,7 +43,9 @@ services: "127.0.0.1:4000:4000", ] volumes: - - .:/opt/akkoma + - ./uploads:/opt/akkoma/uploads:Z + - ./instance:/opt/akkoma/instance:Z + - ./config/docker-config.exs:/opt/akkoma/config/docker-config.exs:Z # Uncomment the following if you want to use a reverse proxy #proxy: @@ -60,3 +61,6 @@ services: # - ./docker-resources/Caddyfile:/etc/caddy/Caddyfile # - ./caddy-data:/data # - ./caddy-config:/config + +volumes: + db-data: \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 778ef08e2..49319bfa9 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -8,7 +8,7 @@ while ! pg_isready -U ${DB_USER:-pleroma} -d postgres://${DB_HOST:-db}:5432/${DB done echo "-- Running migrations..." -mix ecto.migrate +/opt/akkoma/bin/pleroma_ctl migrate echo "-- Starting!" -mix phx.server +/opt/akkoma/bin/pleroma start diff --git a/docker-resources/generate-instance b/docker-resources/generate-instance new file mode 100755 index 000000000..29de6db09 --- /dev/null +++ b/docker-resources/generate-instance @@ -0,0 +1,16 @@ +#!/bin/bash + +mkdir -p ./uploads ./instance + +podman run \ + -v ./config:/opt/akkoma/config/:Z \ + -v ./uploads:/opt/akkoma/uploads/:Z \ + -v ./instance:/opt/akkoma/instance/:Z \ + -it akkoma ./bin/pleroma_ctl instance gen \ + --dbhost db \ + --dbname akkoma \ + --dbpass akkoma \ + --dbuser akkoma \ + --static-dir /opt/akkoma/instance/ \ + --uploads-dir /opt/akkoma/uploads/ \ + --listen-ip 0.0.0.0 $@ \ No newline at end of file diff --git a/docker-resources/install-frontend b/docker-resources/install-frontend new file mode 100644 index 000000000..ff1104988 --- /dev/null +++ b/docker-resources/install-frontend @@ -0,0 +1,3 @@ +#!/bin/bash + +podman compose run -e "PLEROMA_CTL_RPC_DISABLED=true" --rm akkoma ./bin/pleroma_ctl frontend install pleroma-fe --ref stable \ No newline at end of file diff --git a/docker-resources/manage.sh b/docker-resources/manage.sh index acb6618c3..dd2e63902 100755 --- a/docker-resources/manage.sh +++ b/docker-resources/manage.sh @@ -1,3 +1,3 @@ #!/bin/sh -docker compose run --rm akkoma $@ +podman compose run -e "PLEROMA_CTL_RPC_DISABLED=true" --rm akkoma ./bin/pleroma_ctl $@