From 54a4585107745eb24cfb424e7d5b76f03947a132 Mon Sep 17 00:00:00 2001 From: Sergey Vorontsov Date: Mon, 24 Jul 2023 18:46:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20docker=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил создание docker контейнера. ``` docker build -t inpx-web . docker run -v /path/to/library:/library -v /path/to/library/flibusta.inpx:/app/data/index.inpx -p 12380:12380 inpx-web ``` Внутри контейнера создаётся пользователь inpx-web и id=1000 и сервер запускается под этим пользователем. Важно: запускать контейнер и монтировать внутрь папки с архивами в `/library` и файл inpx в `/app/data/index.inpx`. сloses https://github.com/bookpauk/inpx-web/issues/16 --- Dockerfile | 35 +++++++++++++++++++++++++++++++++++ README.md | 14 ++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a538455 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM ubuntu:22.04 + +WORKDIR /app +COPY . /app + +RUN useradd -ms /bin/bash -u 1000 -U -d /app inpx-web + +RUN set -e \ + && apt update \ + && apt -y upgrade \ + && apt install -y --no-install-recommends curl wget zip ca-certificates \ + && curl -sL https://deb.nodesource.com/setup_20.x | bash \ + && apt install -y --no-install-recommends nodejs \ + && apt clean + +RUN set -e \ + && npm install \ + && npm run build:client \ + && node build/prepkg.js linux \ + && mkdir -p /app/data \ + && chown -R inpx-web:inpx-web /app \ + && mkdir -p /library \ + && rm ./server/config/application_env \ + && echo "chown -R inpx-web:inpx-web /app" + +RUN echo "#!/bin/bash" >> /entrypoint.sh \ + && echo "set -e" >> /entrypoint.sh \ + && echo "su inpx-web -c \"node server --lib-dir=/library --app-dir=/app/data --inpx=/app/data/index.inpx --recreate\"" >> /entrypoint.sh \ + && chmod +x /entrypoint.sh + +EXPOSE 12380 + +HEALTHCHECK CMD curl --fail http://localhost:12380 || exit 1 + +ENTRYPOINT [ "/entrypoint.sh" ] diff --git a/README.md b/README.md index d0957c7..c1da5d3 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ OPDS-сервер доступен по адресу [http://127.0.0.1:12380/opd [Отблагодарить автора проекта](https://donatty.com/liberama) +## ## * [Возможности программы](#capabilities) * [Использование](#usage) @@ -32,6 +33,7 @@ OPDS-сервер доступен по адресу [http://127.0.0.1:12380/opd * [Сборка релизов](#build) * [Запуск без сборки релиза](#native_run) * [Разработка](#development) +* [Запуск в docker](#docker) @@ -369,4 +371,16 @@ node server --app-dir=.inpx-web npm run dev ``` + + +### Запуск в docker + +```sh +docker build -t inpx-web . +docker run -v /path/to/library:/library -v /path/to/library/flibusta.inpx:/app/data/index.inpx -p 12380:12380 inpx-web +``` + +Внутри контейнера создаётся пользователь inpx-web и id=1000 и сервер запускается под этим пользователем. +Важно: запускать контейнер и монтировать внутрь папку с архивами в `/library` и файл inpx в `/app/data/index.inpx`. + Связаться с автором проекта: [bookpauk@gmail.com](mailto:bookpauk@gmail.com) \ No newline at end of file