Dockerfile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. FROM cthulhoo/ttrss-fpm-pgsql-static:22.01-b59bde7b4 as ttrss-src
  2. FROM postgres:14.1-alpine
  3. ARG S6_VER=2.2.0.3
  4. ENV UID=1000
  5. ENV GID=1000
  6. ENV POSTGRES_DB=ttrss
  7. ENV POSTGRES_USER=ttrss
  8. ENV POSTGRES_PASSWORD=ttrss
  9. ENV TTRSS_DB_NAME=ttrss
  10. ENV TTRSS_DB_USER=ttrss
  11. ENV TTRSS_DB_PASS=ttrss
  12. ENV TTRSS_DB_TYPE=pgsql
  13. ENV TTRSS_DB_PORT=5432
  14. ENV TTRSS_DB_HOST=0.0.0.0
  15. ENV TTRSS_SELF_URL_PATH=http://localhost:80/
  16. ENV TTRSS_PHP_EXECUTABLE=/usr/bin/php8
  17. ENV TTRSS_PLUGINS=auth_internal,fever,mercury_fulltext
  18. ENV SCRIPT_ROOT=/usr/local/tt-rss/app
  19. ENV TZ=Asia/Shanghai
  20. ENV TTRSS_ALLOW_PORTS=80,443
  21. ENV TTRSS_UPDATE_AUTO=true
  22. ENV POSTGRES_DB_DUMP=false
  23. ENV POSTGRES_DB_RESTORE=false
  24. COPY root /
  25. COPY --from=ttrss-src /src/tt-rss /usr/local/tt-rss/app
  26. # install php tt-rss caddy git [npm nodejs]-mercury-parser-api
  27. RUN apk add --no-cache bash shadow tzdata git npm nodejs ca-certificates caddy clang llvm12 build-base dumb-init postgresql-client \
  28. php8 php8-fpm php8-pdo php8-gd php8-pgsql php8-pdo_pgsql php8-mbstring php8-intl php8-xml php8-curl php8-session \
  29. php8-tokenizer php8-dom php8-fileinfo php8-json php8-iconv php8-pcntl php8-posix php8-zip php8-exif php8-openssl php8-pecl-xdebug \
  30. #gd-png: libpng warning
  31. && apk add --no-cache php8-gd=8.0.13-r0 --repository https://dl-cdn.alpinelinux.org/alpine/v3.14/community \
  32. # install s6-overlay
  33. && if [ "$(uname -m)" = "x86_64" ];then s6_arch=amd64;elif [ "$(uname -m)" = "aarch64" ];then s6_arch=aarch64;elif [ "$(uname -m)" = "armv7l" ];then s6_arch=arm; fi \
  34. && wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz \
  35. && tar -xvzf s6-overlay-${s6_arch}.tar.gz \
  36. # install mercury-parser-api
  37. && npm install --prefix /usr/local/mercury-parser-api git+https://github.com/HenryQW/mercury-parser-api.git \
  38. # install zhparser
  39. && wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 \
  40. && tar -xf scws-1.2.3.tar.bz2 \
  41. && cd scws-1.2.3 \
  42. && ./configure \
  43. && make install \
  44. && git clone --depth 1 https://github.com/amutu/zhparser.git \
  45. && cd zhparser \
  46. && make install \
  47. #create ttrss user
  48. && useradd -u 1000 -U -d /config -s /bin/false ttrss \
  49. && usermod -G users ttrss \
  50. # php
  51. && sed -i 's/\(memory_limit =\) 128M/\1 256M/' /etc/php8/php.ini \
  52. && sed -i -e 's/;\(clear_env\) = .*/\1 = no/i' /etc/php8/php-fpm.d/www.conf \
  53. && sed -i -e 's/^\(user\|group\) = .*/\1 = postgres/i' /etc/php8/php-fpm.d/www.conf \
  54. && sed -i -e 's/;\(php_admin_value\[error_log\]\) = .*/\1 = \/var\/log\/php8\/error.log/' /etc/php8/php-fpm.d/www.conf \
  55. && sed -i -e 's/;\(php_admin_flag\[log_errors\]\) = .*/\1 = on/' /etc/php8/php-fpm.d/www.conf \
  56. # install plugins
  57. && mkdir -p /usr/local/tt-rss/defaults \
  58. && mv /usr/local/tt-rss/app/cache /usr/local/tt-rss/defaults/cache \
  59. && mv /usr/local/tt-rss/app/feed-icons /usr/local/tt-rss/defaults/feed-icons \
  60. && mv /usr/local/tt-rss/app/lock /usr/local/tt-rss/defaults/lock \
  61. && mv /usr/local/tt-rss/app/plugins.local /usr/local/tt-rss/defaults/plugins.local \
  62. && mv /usr/local/tt-rss/app/templates.local /usr/local/tt-rss/defaults/templates.local \
  63. && mv /usr/local/tt-rss/app/themes.local /usr/local/tt-rss/defaults/themes.local \
  64. # del nginx_xaccel
  65. && if [ -d "/usr/local/tt-rss/defaults/plugins.local/nginx_xaccel" ];then rm -rf /usr/local/tt-rss/defaults/plugins.local/nginx_xaccel; fi \
  66. # install mercury_fulltext
  67. && git clone --depth 1 https://github.com/HenryQW/mercury_fulltext.git /usr/local/tt-rss/defaults/plugins.local/mercury_fulltext \
  68. # install feediron
  69. && git clone --depth 1 https://github.com/feediron/ttrss_plugin-feediron.git /usr/local/tt-rss/defaults/plugins.local/feediron \
  70. # install fever
  71. && git clone --depth 1 https://github.com/DigitalDJ/tinytinyrss-fever-plugin /usr/local/tt-rss/defaults/plugins.local/fever \
  72. # install themes
  73. # install tt-rss-feedly-theme
  74. && git clone --depth 1 https://github.com/levito/tt-rss-feedly-theme.git /usr/local/tt-rss/defaults/themes.local/tt-rss-feedly-theme \
  75. #clean
  76. && apk del clang llvm12 build-base \
  77. && rm -rf /var/cache/apk/* \
  78. && rm /s6-overlay-${s6_arch}.tar.gz \
  79. && rm -rf /scws* \
  80. && chmod a+x /usr/local/bin/initialize.sh \
  81. && chmod a+x /usr/local/tt-rss/defaults/updatett-rss.sh \
  82. && chmod a+x /usr/local/tt-rss/defaults/postgres-dump-restore.sh
  83. VOLUME /config
  84. EXPOSE 80 3000 5432
  85. ENTRYPOINT [ "/init" ]