From 59055ef31f4d729b449260033d3275f91fb13185 Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Thu, 7 Dec 2023 07:00:54 -0600 Subject: [PATCH] Switch to esbuild for running HPNP. --- Dockerfile | 20 +++++++++++------- frontend/package.json | 3 +-- frontend/src/hpnp/index.ts | 2 ++ util/docker/common/add_user.sh | 1 + util/docker/dev/setup/bun.sh | 8 ------- util/docker/hpnp/service.full/hpnp.conf | 19 ----------------- util/docker/hpnp/setup.sh | 21 ------------------- .../{dev => web}/service.full/hpnp.conf | 4 ++-- 8 files changed, 18 insertions(+), 60 deletions(-) delete mode 100644 util/docker/dev/setup/bun.sh delete mode 100644 util/docker/hpnp/service.full/hpnp.conf delete mode 100644 util/docker/hpnp/setup.sh rename util/docker/{dev => web}/service.full/hpnp.conf (80%) diff --git a/Dockerfile b/Dockerfile index 688ea8455..61a427920 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,7 +63,18 @@ RUN bash /bd_build/chown_dirs.sh \ USER azuracast -RUN touch /var/azuracast/.docker +# Build HPNP +RUN mkdir -p /tmp/hpnp + +COPY --chown=azuracast:azuracast ./frontend /tmp/hpnp + +RUN cd /tmp/hpnp \ + && npm ci --include=dev \ + && npm run build-hpnp \ + && chmod a+x /var/azuracast/scripts/hpnp.cjs + +RUN rm -rf /tmp/hpnp \ + && touch /var/azuracast/.docker USER root @@ -162,13 +173,6 @@ RUN composer dump-autoload --optimize --classmap-authoritative USER root -COPY ./util/docker/common /bd_build/ -COPY ./util/docker/hpnp /bd_build/hpnp - -RUN bash /bd_build/hpnp/setup.sh \ - && bash /bd_build/cleanup.sh \ - && rm -rf /bd_build - EXPOSE 80 443 2022 EXPOSE 8000-8999 diff --git a/frontend/package.json b/frontend/package.json index 6a30bab59..6a5879628 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,8 +7,7 @@ "serve": "vite", "generate-locales": "vue-gettext-extract", "generate-api": "swagger-typescript-api --path http://localhost/api/openapi.yml --output ./src/entities --name ApiInterfaces.ts --no-client", - "hpnp-dev": "bun --hot ./src/hpnp/index.ts", - "build-hpnp": "bun build --compile --minify --outfile ./hpnp ./src/hpnp/index.ts" + "build-hpnp": "esbuild --bundle --target=node20 --platform=node ./src/hpnp/index.ts > /var/azuracast/scripts/hpnp.cjs" }, "dependencies": { "@codemirror/lang-css": "^6.0.1", diff --git a/frontend/src/hpnp/index.ts b/frontend/src/hpnp/index.ts index 7b9f6e6c4..75490833c 100644 --- a/frontend/src/hpnp/index.ts +++ b/frontend/src/hpnp/index.ts @@ -1,3 +1,5 @@ +#!/usr/bin/env node + import {ApiNowPlaying} from "~/entities/ApiInterfaces.ts"; import {Channel, createChannel, createSession, Session} from "better-sse"; import {App} from '@tinyhttp/app'; diff --git a/util/docker/common/add_user.sh b/util/docker/common/add_user.sh index 8b97fd20a..bf1ec4796 100644 --- a/util/docker/common/add_user.sh +++ b/util/docker/common/add_user.sh @@ -14,6 +14,7 @@ usermod -aG www-data azuracast mkdir -p /var/azuracast/www /var/azuracast/stations /var/azuracast/www_tmp \ /var/azuracast/backups \ /var/azuracast/dbip \ + /var/azuracast/scripts \ /var/azuracast/storage/uploads \ /var/azuracast/storage/shoutcast2 \ /var/azuracast/storage/stereo_tool \ diff --git a/util/docker/dev/setup/bun.sh b/util/docker/dev/setup/bun.sh deleted file mode 100644 index 1e79e82c2..000000000 --- a/util/docker/dev/setup/bun.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -e -set -x - -curl -fsSL https://bun.sh/install | gosu azuracast bash - -ln -s /var/azuracast/.bun/bin/bun /usr/local/bin/bun -ln -s /var/azuracast/.bun/bin/bunx /usr/local/bin/bunx diff --git a/util/docker/hpnp/service.full/hpnp.conf b/util/docker/hpnp/service.full/hpnp.conf deleted file mode 100644 index e0f86b1f3..000000000 --- a/util/docker/hpnp/service.full/hpnp.conf +++ /dev/null @@ -1,19 +0,0 @@ -[program:hpnp] -directory=/var/azuracast/ -command=hpnp -user=azuracast -priority=700 -numprocs=1 -autostart=true -autorestart=true - -stopasgroup=true -killasgroup=true - -stdout_logfile=/var/azuracast/www_tmp/service_hpnp.log -stdout_logfile_maxbytes=5MB -stdout_logfile_backups=5 -redirect_stderr=true - -stdout_events_enabled = true -stderr_events_enabled = true diff --git a/util/docker/hpnp/setup.sh b/util/docker/hpnp/setup.sh deleted file mode 100644 index 4aa28689c..000000000 --- a/util/docker/hpnp/setup.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -e -set -x - -curl -fsSL https://bun.sh/install | gosu azuracast bash -ln -s /var/azuracast/.bun/bin/bun /usr/local/bin/bun -ln -s /var/azuracast/.bun/bin/bunx /usr/local/bin/bunx - -cd /var/azuracast/www/frontend -gosu azuracast npm ci -gosu azuracast npm run build-hpnp - -mv ./hpnp /usr/local/bin/hpnp -chmod a+x /usr/local/bin/hpnp - -rm -rf /var/azuracast/www/frontend/node_modules -rm -rf /var/azuracast/.bun -rm -rf /usr/local/bin/bun -rm -rf /usr/local/bin/bunx - -cp -rT /bd_build/hpnp/service.full/. /etc/supervisor/full.conf.d/ diff --git a/util/docker/dev/service.full/hpnp.conf b/util/docker/web/service.full/hpnp.conf similarity index 80% rename from util/docker/dev/service.full/hpnp.conf rename to util/docker/web/service.full/hpnp.conf index 26da220e7..055bbd9e1 100644 --- a/util/docker/dev/service.full/hpnp.conf +++ b/util/docker/web/service.full/hpnp.conf @@ -1,6 +1,6 @@ [program:hpnp] -directory=/var/azuracast/www/frontend -command=npm run hpnp-dev +directory=/var/azuracast/scripts +command=/var/azuracast/scripts/hpnp.cjs user=azuracast priority=700 numprocs=1