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..6a5b5ac 100644 --- a/README.md +++ b/README.md @@ -22,16 +22,19 @@ OPDS-сервер доступен по адресу [http://127.0.0.1:12380/opd [Отблагодарить автора проекта](https://donatty.com/liberama) ## -* [Возможности программы](#capabilities) -* [Использование](#usage) - * [Параметры командной строки](#cli) - * [Конфигурация](#config) - * [Удаленная библиотека](#remotelib) - * [Фильтр по авторам и книгам](#filter) - * [Настройка https с помощью nginx](#https) -* [Сборка релизов](#build) -* [Запуск без сборки релиза](#native_run) -* [Разработка](#development) +- [inpx-web](#inpx-web) + - [](#) + - [Возможности программы](#возможности-программы) + - [Использование](#использование) + - [Параметры командной строки](#параметры-командной-строки) + - [Конфигурация](#конфигурация) + - [Удаленная библиотека](#удаленная-библиотека) + - [Фильтр по авторам и книгам](#фильтр-по-авторам-и-книгам) + - [Настройка https с помощью nginx](#настройка-https-с-помощью-nginx) + - [Сборка релизов](#сборка-релизов) + - [Запуск без сборки релиза](#запуск-без-сборки-релиза) + - [Разработка](#разработка) + - [Запуск в docker](#запуск-в-docker) @@ -369,4 +372,14 @@ 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