mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-21 17:15:25 +03:00
Docker from Debian base image (#3500)
* Docker from Debian base image * Fix expose https://github.com/RSS-Bridge/rss-bridge/discussions/3234 * Re-fix better logs https://github.com/RSS-Bridge/rss-bridge/pull/3333 * Update to Debian 12 Bookworm instead of Debian 10 Buster * Use Debian packaging instead of having to keep track of and manually install -dev libraries, and with LTS support * Update to PHP 8.2 instead of PHP 8.0 * Fix php.ini location * Minor order changes To optimise caching
This commit is contained in:
parent
4323a11667
commit
0175e13712
7 changed files with 59 additions and 23 deletions
|
@ -12,6 +12,6 @@ server {
|
||||||
|
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
include snippets/fastcgi-php.conf;
|
include snippets/fastcgi-php.conf;
|
||||||
fastcgi_pass 127.0.0.1:9000;
|
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -230,6 +230,9 @@ pip-log.txt
|
||||||
DEBUG
|
DEBUG
|
||||||
config.ini.php
|
config.ini.php
|
||||||
config/*
|
config/*
|
||||||
|
!config/nginx.conf
|
||||||
|
!config/php-fpm.conf
|
||||||
|
!config/php.ini
|
||||||
|
|
||||||
######################
|
######################
|
||||||
## VisualStudioCode ##
|
## VisualStudioCode ##
|
||||||
|
|
43
Dockerfile
43
Dockerfile
|
@ -1,36 +1,47 @@
|
||||||
FROM lwthiker/curl-impersonate:0.5-ff-slim-buster AS curlimpersonate
|
FROM lwthiker/curl-impersonate:0.5-ff-slim-buster AS curlimpersonate
|
||||||
|
|
||||||
FROM php:8.0.27-fpm-buster AS rssbridge
|
FROM debian:12-slim AS rssbridge
|
||||||
|
|
||||||
LABEL description="RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one."
|
LABEL description="RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one."
|
||||||
LABEL repository="https://github.com/RSS-Bridge/rss-bridge"
|
LABEL repository="https://github.com/RSS-Bridge/rss-bridge"
|
||||||
LABEL website="https://github.com/RSS-Bridge/rss-bridge"
|
LABEL website="https://github.com/RSS-Bridge/rss-bridge"
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install --yes --no-install-recommends \
|
apt-get install --yes --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
nginx \
|
nginx \
|
||||||
zlib1g-dev \
|
|
||||||
libzip-dev \
|
|
||||||
libmemcached-dev \
|
|
||||||
nss-plugin-pem \
|
nss-plugin-pem \
|
||||||
libicu-dev && \
|
php-curl \
|
||||||
docker-php-ext-install zip && \
|
php-fpm \
|
||||||
docker-php-ext-install intl && \
|
php-intl \
|
||||||
pecl install memcached && \
|
# php-json is enabled by default with PHP 8.2 in Debian 12
|
||||||
docker-php-ext-enable memcached && \
|
php-mbstring \
|
||||||
docker-php-ext-enable opcache && \
|
php-memcached \
|
||||||
mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
# php-opcache is enabled by default with PHP 8.2 in Debian 12
|
||||||
|
# php-openssl is enabled by default with PHP 8.2 in Debian 12
|
||||||
|
php-sqlite3 \
|
||||||
|
php-xml \
|
||||||
|
php-zip \
|
||||||
|
# php-zlib is enabled by default with PHP 8.2 in Debian 12
|
||||||
|
&& \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY ./config/nginx.conf /etc/nginx/sites-enabled/default
|
# logs should go to stdout / stderr
|
||||||
|
RUN ln -sfT /dev/stderr /var/log/nginx/error.log; \
|
||||||
COPY --chown=www-data:www-data ./ /app/
|
ln -sfT /dev/stdout /var/log/nginx/access.log; \
|
||||||
|
chown -R --no-dereference www-data:adm /var/log/nginx/
|
||||||
|
|
||||||
COPY --from=curlimpersonate /usr/local/lib/libcurl-impersonate-ff.so /usr/local/lib/curl-impersonate/
|
COPY --from=curlimpersonate /usr/local/lib/libcurl-impersonate-ff.so /usr/local/lib/curl-impersonate/
|
||||||
|
|
||||||
ENV LD_PRELOAD /usr/local/lib/curl-impersonate/libcurl-impersonate-ff.so
|
ENV LD_PRELOAD /usr/local/lib/curl-impersonate/libcurl-impersonate-ff.so
|
||||||
|
|
||||||
ENV CURL_IMPERSONATE ff91esr
|
ENV CURL_IMPERSONATE ff91esr
|
||||||
|
|
||||||
|
COPY ./config/nginx.conf /etc/nginx/sites-available/default
|
||||||
|
COPY ./config/php-fpm.conf /etc/php/8.2/fpm/pool.d/rss-bridge.conf
|
||||||
|
COPY ./config/php.ini /etc/php/8.2/fpm/conf.d/90-rss-bridge.conf
|
||||||
|
|
||||||
|
COPY --chown=www-data:www-data ./ /app/
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
||||||
|
|
|
@ -2,8 +2,8 @@ server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
listen [::]:80 default_server;
|
listen [::]:80 default_server;
|
||||||
root /app;
|
root /app;
|
||||||
access_log /dev/stdout;
|
access_log /var/log/nginx/access.log;
|
||||||
error_log /dev/stderr;
|
error_log /var/log/nginx/error.log;
|
||||||
index index.php;
|
index index.php;
|
||||||
|
|
||||||
location ~ /(\.|vendor|tests) {
|
location ~ /(\.|vendor|tests) {
|
||||||
|
@ -13,6 +13,6 @@ server {
|
||||||
|
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
include snippets/fastcgi-php.conf;
|
include snippets/fastcgi-php.conf;
|
||||||
fastcgi_pass 127.0.0.1:9000;
|
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
18
config/php-fpm.conf
Normal file
18
config/php-fpm.conf
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
; Inspired by https://github.com/docker-library/php/blob/master/8.2/bookworm/fpm/Dockerfile
|
||||||
|
|
||||||
|
[global]
|
||||||
|
error_log = /proc/self/fd/2
|
||||||
|
|
||||||
|
; https://github.com/docker-library/php/pull/725#issuecomment-443540114
|
||||||
|
log_limit = 8192
|
||||||
|
|
||||||
|
[www]
|
||||||
|
; php-fpm closes STDOUT on startup, so sending logs to /proc/self/fd/1 does not work.
|
||||||
|
; https://bugs.php.net/bug.php?id=73886
|
||||||
|
access.log = /proc/self/fd/2
|
||||||
|
|
||||||
|
clear_env = no
|
||||||
|
|
||||||
|
; Ensure worker stdout and stderr are sent to the main error log.
|
||||||
|
catch_workers_output = yes
|
||||||
|
decorate_workers_output = no
|
4
config/php.ini
Normal file
4
config/php.ini
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
; Inspired by https://github.com/docker-library/php/blob/master/8.2/bookworm/fpm/Dockerfile
|
||||||
|
|
||||||
|
; https://github.com/docker-library/php/issues/878#issuecomment-938595965'
|
||||||
|
fastcgi.logging = Off
|
|
@ -41,5 +41,5 @@ fi
|
||||||
# nginx will daemonize
|
# nginx will daemonize
|
||||||
nginx
|
nginx
|
||||||
|
|
||||||
# php-fpm will not
|
# php-fpm should not daemonize
|
||||||
php-fpm
|
php-fpm8.2 --nodaemonize
|
||||||
|
|
Loading…
Reference in a new issue