Dockerfile 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. FROM ghcr.io/gshang2017/postgres:latest
  2. ARG S6_VER=3.1.6.2
  3. ARG TTRSS_VER=24.03-435c321c
  4. ARG GIT_COMMIT_SHA=435c321caaf3ae7aca936f175348d9efb40d6419
  5. ENV UID=1000
  6. ENV GID=1000
  7. ENV POSTGRES_DB=ttrss
  8. ENV POSTGRES_USER=ttrss
  9. ENV POSTGRES_PASSWORD=ttrss
  10. ENV TTRSS_DB_NAME=ttrss
  11. ENV TTRSS_DB_USER=ttrss
  12. ENV TTRSS_DB_PASS=ttrss
  13. ENV TTRSS_DB_TYPE=pgsql
  14. ENV TTRSS_DB_PORT=5432
  15. ENV TTRSS_DB_HOST=0.0.0.0
  16. ENV TTRSS_SELF_URL_PATH=http://localhost:80/
  17. ENV TTRSS_PHP_EXECUTABLE=/usr/bin/php82
  18. ENV TTRSS_PLUGINS=auth_internal,fever,mercury_fulltext,af_readability
  19. ENV SCRIPT_ROOT=/usr/local/tt-rss/app
  20. ENV TZ=Asia/Shanghai
  21. ENV TTRSS_ALLOW_PORTS=80,443
  22. ENV TTRSS_UPDATE_AUTO=true
  23. ENV POSTGRES_DB_DUMP=false
  24. ENV POSTGRES_DB_RESTORE=false
  25. ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
  26. COPY --chmod=755 root /
  27. # install php tt-rss caddy git [npm nodejs]-mercury-parser-api
  28. RUN apk add --no-cache bash shadow tzdata git npm nodejs ca-certificates caddy dumb-init postgresql-client musl-locales \
  29. php82 php82-fpm php82-pdo php82-gd php82-pgsql php82-pdo_pgsql php82-mbstring php82-intl php82-xml php82-curl php82-session php82-tokenizer \
  30. php82-dom php82-fileinfo php82-ctype php82-json php82-iconv php82-pcntl php82-posix php82-zip php82-exif php82-openssl php82-pecl-xdebug \
  31. && apk add --no-cache --virtual ttrssdep clang15 llvm15 build-base \
  32. # install s6-overlay
  33. && if [ "$(uname -m)" = "x86_64" ];then s6_arch=x86_64;elif [ "$(uname -m)" = "aarch64" ];then s6_arch=aarch64;elif [ "$(uname -m)" = "armv7l" ];then s6_arch=arm; fi \
  34. && wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-noarch.tar.xz \
  35. && tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz \
  36. && wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.xz \
  37. && tar -C / -Jxpf /tmp/s6-overlay-${s6_arch}.tar.xz \
  38. && wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-symlinks-noarch.tar.xz \
  39. && tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz \
  40. && wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-symlinks-arch.tar.xz \
  41. && tar -C / -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz \
  42. # install mercury-parser-api
  43. && npm install --prefix /usr/local/mercury-parser-api git+https://github.com/HenryQW/mercury-parser-api.git \
  44. # install zhparser
  45. && wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 \
  46. && tar -xf scws-1.2.3.tar.bz2 \
  47. && cd scws-1.2.3 \
  48. && ./configure \
  49. && make install \
  50. && git clone --depth 1 https://github.com/amutu/zhparser.git \
  51. && cd zhparser \
  52. && make install \
  53. #create ttrss user
  54. && useradd -u 1000 -U -d /config -s /bin/false ttrss \
  55. && usermod -G users ttrss \
  56. # php
  57. && sed -i 's/\(memory_limit =\) 128M/\1 256M/' /etc/php82/php.ini \
  58. && sed -i -e 's/;\(clear_env\) = .*/\1 = no/i' /etc/php82/php-fpm.d/www.conf \
  59. && sed -i -e 's/^\(user\|group\) = .*/\1 = postgres/i' /etc/php82/php-fpm.d/www.conf \
  60. && sed -i -e 's/;\(php_admin_value\[error_log\]\) = .*/\1 = \/var\/log\/php82\/error.log/' /etc/php82/php-fpm.d/www.conf \
  61. && sed -i -e 's/;\(php_admin_flag\[log_errors\]\) = .*/\1 = on/' /etc/php82/php-fpm.d/www.conf \
  62. # reset ttrss
  63. && git clone --depth 50 https://git.tt-rss.org/fox/tt-rss.git /usr/local/tt-rss/app \
  64. && cd /usr/local/tt-rss/app \
  65. && git reset --hard ${GIT_COMMIT_SHA} \
  66. # install plugins
  67. && mkdir -p /usr/local/tt-rss/defaults \
  68. && mv /usr/local/tt-rss/app/cache /usr/local/tt-rss/defaults/cache \
  69. && mv /usr/local/tt-rss/app/feed-icons /usr/local/tt-rss/defaults/feed-icons \
  70. && mv /usr/local/tt-rss/app/lock /usr/local/tt-rss/defaults/lock \
  71. && mv /usr/local/tt-rss/app/plugins.local /usr/local/tt-rss/defaults/plugins.local \
  72. && mv /usr/local/tt-rss/app/templates.local /usr/local/tt-rss/defaults/templates.local \
  73. && mv /usr/local/tt-rss/app/themes.local /usr/local/tt-rss/defaults/themes.local \
  74. # install mercury_fulltext
  75. && git clone --depth 1 https://github.com/HenryQW/mercury_fulltext.git /usr/local/tt-rss/defaults/plugins.local/mercury_fulltext \
  76. # install feediron
  77. && git clone --depth 1 https://github.com/feediron/ttrss_plugin-feediron.git /usr/local/tt-rss/defaults/plugins.local/feediron \
  78. # install fever
  79. && git clone --depth 1 https://github.com/DigitalDJ/tinytinyrss-fever-plugin /usr/local/tt-rss/defaults/plugins.local/fever \
  80. # install af-readability
  81. && git clone --depth 1 https://git.tt-rss.org/fox/ttrss-af-readability.git /usr/local/tt-rss/defaults/plugins.local/af_readability \
  82. # install themes
  83. # install tt-rss-feedly-theme
  84. && git clone -b dist --depth 1 https://github.com/levito/tt-rss-feedly-theme.git /usr/local/tt-rss/defaults/themes.local/tt-rss-feedly-theme \
  85. # add safe.directory
  86. && git config --global --add safe.directory /usr/local/tt-rss/app \
  87. && git config --global --add safe.directory /config/plugins.local/mercury_fulltext \
  88. && git config --global --add safe.directory /config/plugins.local/feediron \
  89. && git config --global --add safe.directory /config/plugins.local/fever \
  90. && git config --global --add safe.directory /usr/local/tt-rss/defaults/themes.local/tt-rss-feedly-theme \
  91. #clear
  92. && apk del ttrssdep \
  93. && rm -rf /var/cache/apk/* /tmp/* /scws*
  94. VOLUME /config
  95. EXPOSE 80 3000 5432
  96. ENTRYPOINT [ "/init" ]