From 2267b47de85e90347d6591f8e3dc1475ffc95411 Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 11 Mar 2024 18:47:13 -0700 Subject: [PATCH] Upgrade to Elixir 1.16.2 (#71) * Upgraded local docker to 1.16.2 * Removed tmpfix from mix check that was waiting for 1.16.2 * Update selfhosted dockerfile with some addl. updates --- .check.exs | 9 +++------ dev.Dockerfile | 11 ++++++++--- ideas.md | 2 -- selfhosted.Dockerfile | 26 +++++++++++++++++++------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/.check.exs b/.check.exs index ea8f94c..da0bf22 100644 --- a/.check.exs +++ b/.check.exs @@ -9,18 +9,15 @@ fix: true, ## don't retry automatically even if last run resulted in failures - # retry: false, + retry: false, ## list of tools (see `mix check` docs for a list of default curated tools) tools: [ {:compiler, env: %{"MIX_ENV" => "test"}}, {:formatter, env: %{"MIX_ENV" => "test"}}, {:sobelow, "mix sobelow --config"}, - # TODO: delete these and replace them with builtin ex_unit and formatter tools - # once Elixir 1.16.2 is released (see: https://github.com/karolsluszniak/ex_check/issues/41#issuecomment-1921390413) - {:elixir_tests, "mix test"}, - {:elixir_formatting, "mix format --check-formatted", fix: "mix format"}, - {:prettier_formatting, "yarn run prettier . --check", fix: "yarn run prettier . --write"} + {:prettier_formatting, "yarn run prettier . --check", fix: "yarn run prettier . --write"}, + {:npm_test, false} ## curated tools may be disabled (e.g. the check for compilation warnings) # {:compiler, false}, diff --git a/dev.Dockerfile b/dev.Dockerfile index b1c20e0..cd9bd2d 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -1,9 +1,13 @@ -# Extend from the official Elixir image. -FROM elixir:latest +ARG ELIXIR_VERSION=1.16.2 +ARG OTP_VERSION=26.2.2 +ARG DEBIAN_VERSION=bookworm-20240130 +ARG DEV_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}" + +FROM ${DEV_IMAGE} # Install debian packages RUN apt-get update -qq -RUN apt-get install -y inotify-tools ffmpeg \ +RUN apt-get install -y inotify-tools ffmpeg curl git openssh-client \ python3 python3-pip python3-setuptools python3-wheel python3-dev # Install nodejs @@ -28,6 +32,7 @@ COPY . ./ RUN chmod +x ./docker-run.dev.sh # Install Elixir deps +# RUN mix archive.install github hexpm/hex branch latest RUN mix deps.get # Gives us iex shell history ENV ERL_AFLAGS="-kernel shell_history enabled" diff --git a/ideas.md b/ideas.md index 93f1859..ac5addc 100644 --- a/ideas.md +++ b/ideas.md @@ -2,5 +2,3 @@ - Use a UUID for the media database ID (or at least alongside it) - Look into this and its recommended plugins https://hexdocs.pm/ex_check/readme.html - Add output template option for the source's friendly name -- TODO: Install Elixir 1.16.2 when available to fix bug with `ex_check` https://github.com/karolsluszniak/ex_check/issues/41#issuecomment-1921390413 - - delete `{:elixir_tests, "mix test"}` and formatting check diff --git a/selfhosted.Dockerfile b/selfhosted.Dockerfile index 79ffaff..06a37f2 100644 --- a/selfhosted.Dockerfile +++ b/selfhosted.Dockerfile @@ -11,9 +11,9 @@ # - https://pkgs.org/ - resource for finding needed packages # - Ex: hexpm/elixir:1.16.0-erlang-26.2.1-debian-bullseye-20231009-slim # -ARG ELIXIR_VERSION=1.16.0 -ARG OTP_VERSION=26.2.1 -ARG DEBIAN_VERSION=bullseye-20231009-slim +ARG ELIXIR_VERSION=1.16.2 +ARG OTP_VERSION=26.2.2 +ARG DEBIAN_VERSION=bookworm-20240130-slim ARG BUILDER_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}" ARG RUNNER_IMAGE="debian:${DEBIAN_VERSION}" @@ -76,12 +76,13 @@ FROM ${RUNNER_IMAGE} RUN apt-get update -y RUN apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates \ - python3 python3-pip ffmpeg + ffmpeg curl git openssh-client RUN apt-get clean && rm -f /var/lib/apt/lists/*_* -# Download YT-DLP -# NOTE: If you're seeing weird issues, consider using the FFMPEG released by yt-dlp -RUN python3 -m pip install -U --pre yt-dlp +# Download and update YT-DLP +RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp +RUN chmod a+rx /usr/local/bin/yt-dlp +RUN yt-dlp -U # Set the locale RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen @@ -106,6 +107,17 @@ ENV RUN_CONTEXT="selfhosted" # Only copy the final release from the build stage COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/pinchflat ./ +# NEVER do this if you're running in an environment where you don't trust the user +# (ie: most environments). This is only acceptable in a self-hosted environment. +# The user could just run the whole container as root and bypass this anyway so +# it's not a huge deal. +# This removes the root password to allow users to assume root if needed. This is +# preferrable to running the whole container as root so that the files/directories +# created by the app aren't owned by root and are therefore easier for other users +# and processes to interact with. If you want to just run the whole container as +# root, use --user 0:0 or something. +RUN passwd -d root + USER nobody # If using an environment that doesn't automatically reap zombie processes, it is