mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 21:22:40 +00:00
Changed init systtems, php hangs in Docker container
This commit is contained in:
parent
3901c92509
commit
5316ac628a
30 changed files with 111 additions and 72 deletions
15
Dockerfile
15
Dockerfile
|
@ -1,24 +1,29 @@
|
||||||
#### Copy stage ####
|
#### Copy stage ####
|
||||||
FROM mensbeam/baseimage_alpine:latest as copy-stage
|
FROM mensbeam/baseimage_alpine:latest AS copy-stage
|
||||||
|
|
||||||
|
ARG VENDOR_DIR
|
||||||
|
|
||||||
RUN mkdir -p /copy/app/arsse
|
RUN mkdir -p /copy/app/arsse
|
||||||
COPY dist/docker /copy
|
COPY dist/docker /copy
|
||||||
COPY arsse.php /copy/app/arsse/
|
COPY arsse.php /copy/app/arsse/
|
||||||
COPY composer.json /copy/app/arsse/
|
COPY composer.json /copy/app/arsse/
|
||||||
COPY composer.lock /copy/app/arsse/
|
COPY composer.lock /copy/app/arsse/
|
||||||
COPY www /copy/app/arsse/www
|
|
||||||
COPY lib /copy/app/arsse/lib
|
COPY lib /copy/app/arsse/lib
|
||||||
|
COPY ${VENDOR_DIR} /copy/app/arsse/vendor
|
||||||
|
COPY www /copy/app/arsse/www
|
||||||
|
RUN ln -s /config/arsse/config.php /copy/app/arsse/config.php
|
||||||
|
|
||||||
#### Runtime stage ####
|
#### Runtime stage ####
|
||||||
FROM mensbeam/baseimage_alpine:latest
|
FROM mensbeam/baseimage_alpine:latest
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
composer \
|
|
||||||
gnu-libiconv \
|
gnu-libiconv \
|
||||||
libxml2 \
|
libxml2 \
|
||||||
|
logrotate \
|
||||||
nginx \
|
nginx \
|
||||||
php-fpm \
|
php-fpm \
|
||||||
php83-dom \
|
php83-dom \
|
||||||
|
php83-iconv \
|
||||||
php83-intl \
|
php83-intl \
|
||||||
php83-mysqli \
|
php83-mysqli \
|
||||||
php83-pcntl \
|
php83-pcntl \
|
||||||
|
@ -27,7 +32,9 @@ RUN apk add --no-cache \
|
||||||
php83-pdo_sqlite \
|
php83-pdo_sqlite \
|
||||||
php83-pgsql \
|
php83-pgsql \
|
||||||
php83-posix \
|
php83-posix \
|
||||||
php83-sqlite3
|
php83-sqlite3 && \
|
||||||
|
sed -i "s#/var/log/messages {}.*# #g" /etc/logrotate.conf && \
|
||||||
|
sed -i 's#/usr/sbin/logrotate /etc/logrotate.conf#/usr/sbin/logrotate /etc/logrotate.conf -s /config/log/logrotate.status#g' /etc/periodic/daily/logrotate
|
||||||
|
|
||||||
COPY --from=copy-stage /copy/ /
|
COPY --from=copy-stage /copy/ /
|
||||||
|
|
||||||
|
|
2
dist/docker/default/nginx/fcgi.conf
vendored
2
dist/docker/default/nginx/fcgi.conf
vendored
|
@ -13,5 +13,5 @@ fastcgi_param QUERY_STRING $query_string;
|
||||||
fastcgi_param HTTPS $https if_not_empty;
|
fastcgi_param HTTPS $https if_not_empty;
|
||||||
fastcgi_param REMOTE_USER $remote_user;
|
fastcgi_param REMOTE_USER $remote_user;
|
||||||
|
|
||||||
fastcgi_pass unix:/var/run/php/arsse.sock;
|
fastcgi_pass unix:/app/arsse/arsse.sock;
|
||||||
fastcgi_param SCRIPT_FILENAME /app/arsse/arsse.php;
|
fastcgi_param SCRIPT_FILENAME /app/arsse/arsse.php;
|
14
dist/docker/default/nginx/hosts.conf
vendored
14
dist/docker/default/nginx/hosts.conf
vendored
|
@ -1,22 +1,10 @@
|
||||||
server {
|
server {
|
||||||
server_name -;
|
server_name ~^.*$;
|
||||||
listen 80;
|
listen 80;
|
||||||
listen [::]:80;
|
listen [::]:80;
|
||||||
|
|
||||||
#include /config/nginx/ssl.conf;
|
#include /config/nginx/ssl.conf;
|
||||||
|
|
||||||
# Automatic HTTPS redirection
|
|
||||||
uninitialized_variable_warn off;
|
|
||||||
if ($https = "on") {
|
|
||||||
set $tls_redir off;
|
|
||||||
}
|
|
||||||
if ($tls_redir = "") {
|
|
||||||
set $tls_redir on;
|
|
||||||
}
|
|
||||||
if ($tls_redir = "on") {
|
|
||||||
rewrite ^ https://$host$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
root /app/arsse/www;
|
root /app/arsse/www;
|
||||||
|
|
||||||
location @arsse {
|
location @arsse {
|
||||||
|
|
13
dist/docker/default/nginx/nginx.conf
vendored
13
dist/docker/default/nginx/nginx.conf
vendored
|
@ -131,19 +131,6 @@ http {
|
||||||
# Sets the path, format, and configuration for a buffered log write.
|
# Sets the path, format, and configuration for a buffered log write.
|
||||||
access_log /config/log/nginx/access.log;
|
access_log /config/log/nginx/access.log;
|
||||||
|
|
||||||
# Additional configs.
|
|
||||||
#include /config/nginx/http.d/*.conf;
|
|
||||||
|
|
||||||
# Fallback virtual server
|
|
||||||
server {
|
|
||||||
server_name ~^.*$;
|
|
||||||
listen 80;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
return 503;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Includes virtual hosts configs.
|
# Includes virtual hosts configs.
|
||||||
include /config/nginx/hosts.conf;
|
include /config/nginx/hosts.conf;
|
||||||
}
|
}
|
||||||
|
|
12
dist/docker/default/nginx/ssl.conf
vendored
12
dist/docker/default/nginx/ssl.conf
vendored
|
@ -19,3 +19,15 @@ ssl_prefer_server_ciphers on;
|
||||||
ssl_certificate /config/keys/fullchain.cer;
|
ssl_certificate /config/keys/fullchain.cer;
|
||||||
ssl_certificate_key /config/keys/cert.key;
|
ssl_certificate_key /config/keys/cert.key;
|
||||||
ssl_trusted_certificate /config/keys/cert.cer;
|
ssl_trusted_certificate /config/keys/cert.cer;
|
||||||
|
|
||||||
|
# Automatic HTTPS redirection
|
||||||
|
uninitialized_variable_warn off;
|
||||||
|
if ($https = "on") {
|
||||||
|
set $tls_redir off;
|
||||||
|
}
|
||||||
|
if ($tls_redir = "") {
|
||||||
|
set $tls_redir on;
|
||||||
|
}
|
||||||
|
if ($tls_redir = "on") {
|
||||||
|
rewrite ^ https://$host$request_uri;
|
||||||
|
}
|
14
dist/docker/etc/logrotate.d/nginx
vendored
Normal file
14
dist/docker/etc/logrotate.d/nginx
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/config/log/nginx/*.log {
|
||||||
|
weekly
|
||||||
|
rotate 7
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
nodateext
|
||||||
|
notifempty
|
||||||
|
missingok
|
||||||
|
sharedscripts
|
||||||
|
postrotate
|
||||||
|
sv hup /etc/service/nginx
|
||||||
|
endscript
|
||||||
|
su ook ook
|
||||||
|
}
|
14
dist/docker/etc/logrotate.d/php-fpm
vendored
Normal file
14
dist/docker/etc/logrotate.d/php-fpm
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/config/log/php/*.log {
|
||||||
|
rotate 5
|
||||||
|
weekly
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
delaycompress
|
||||||
|
compress
|
||||||
|
nodateext
|
||||||
|
sharedscripts
|
||||||
|
postrotate
|
||||||
|
sv hup /etc/service/php-fpm
|
||||||
|
endscript
|
||||||
|
su ook ook
|
||||||
|
}
|
6
dist/docker/etc/php83/php-fpm.conf
vendored
6
dist/docker/etc/php83/php-fpm.conf
vendored
|
@ -1,10 +1,8 @@
|
||||||
[global]
|
[global]
|
||||||
env[PATH] = /usr/local/bin:/usr/bin:/bin
|
error_log = /config/log/php/error.log
|
||||||
|
|
||||||
[arsse]
|
[arsse]
|
||||||
user = ook
|
listen = /app/arsse/arsse.sock
|
||||||
group = ook
|
|
||||||
listen = /var/run/php/arsse.sock
|
|
||||||
listen.owner = ook
|
listen.owner = ook
|
||||||
listen.group = ook
|
listen.group = ook
|
||||||
pm = dynamic
|
pm = dynamic
|
||||||
|
|
0
dist/docker/etc/s6-overlay/s6-rc.d/init-config/dependencies.d/init-user
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/init-config/dependencies.d/init-user
vendored
Normal file
20
dist/docker/etc/service/init-config/run → dist/docker/etc/s6-overlay/s6-rc.d/init-config/run
vendored
Normal file → Executable file
20
dist/docker/etc/service/init-config/run → dist/docker/etc/s6-overlay/s6-rc.d/init-config/run
vendored
Normal file → Executable file
|
@ -1,22 +1,22 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
while ! grep -qF "init-user: done"; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
logger -t 'init-config' "start" >> /var/log/run-log
|
|
||||||
|
|
||||||
if [ ! -d "/config/arsse" ] || [ ! "$(ls -A "/config/arsse")" ]; then
|
if [ ! -d "/config/arsse" ] || [ ! "$(ls -A "/config/arsse")" ]; then
|
||||||
echo -n "[init-config] Copying defaults to /config/arsse..."
|
echo -n "[init-config] Copying defaults to /config/arsse..."
|
||||||
cp -R /default/arsse/. /config/arsse
|
cp -R /default/arsse/. /config/arsse
|
||||||
chown -R ook:ook /config/arsse
|
|
||||||
echo " done"
|
echo " done"
|
||||||
fi
|
fi
|
||||||
if [ ! -d "/config/nginx" ] || [ ! "$(ls -A "/config/nginx")" ]; then
|
if [ ! -d "/config/nginx" ] || [ ! "$(ls -A "/config/nginx")" ]; then
|
||||||
echo -n "[init-config] Copying defaults to /config/nginx..."
|
echo -n "[init-config] Copying defaults to /config/nginx..."
|
||||||
cp -R /default/nginx/. /config/nginx
|
cp -R /default/nginx/. /config/nginx
|
||||||
chown -R ook:ook /config/nginx
|
echo " done"
|
||||||
|
fi
|
||||||
|
if [ ! -d "/config/log" ] || [ ! "$(ls -A "/config/log")" ]; then
|
||||||
|
echo -n "[init-config] Creating log folder at /config/log..."
|
||||||
|
mkdir -p /config/log/php
|
||||||
|
mkdir -p /config/log/nginx
|
||||||
echo " done"
|
echo " done"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
logger -t 'init-config' "done" >> /var/log/run-log
|
echo -n "[init-config] Setting permissions for ook user..."
|
||||||
|
chown -R ook:ook /app /config /default 2>/dev/null
|
||||||
|
echo " done"
|
1
dist/docker/etc/s6-overlay/s6-rc.d/init-config/type
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/init-config/type
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
oneshot
|
1
dist/docker/etc/s6-overlay/s6-rc.d/init-config/up
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/init-config/up
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/etc/s6-overlay/s6-rc.d/init-config/run
|
0
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/dependencies.d/init-config
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/dependencies.d/init-config
vendored
Normal file
34
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/run
vendored
Executable file
34
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/run
vendored
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
touch /config/log/nginx/access.log
|
||||||
|
touch /config/log/nginx/error.log
|
||||||
|
|
||||||
|
# Download dhparams if necessary
|
||||||
|
if [ ! -f /config/nginx/dhparams.pem ]; then
|
||||||
|
curl -o /config/nginx/dhparams.pem -L "https://ssl-config.mozilla.org/ffdhe4096.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set resolver
|
||||||
|
touch /config/nginx/resolver.conf
|
||||||
|
if ! grep -q 'resolver' /config/nginx/resolver.conf; then
|
||||||
|
RESOLVERRAW=$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print $2}' /etc/resolv.conf)
|
||||||
|
for i in ${RESOLVERRAW}; do
|
||||||
|
if [[ "$(awk -F ':' '{print NF-1}' <<< "${i}")" -le 2 ]]; then
|
||||||
|
RESOLVER="${RESOLVER} ${i}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -z "${RESOLVER}" ]]; then
|
||||||
|
RESOLVER="127.0.0.11"
|
||||||
|
fi
|
||||||
|
echo "Setting resolver to ${RESOLVER}"
|
||||||
|
RESOLVEROUTPUT="# This file is auto-generated only on first start, based on the container's /etc/resolv.conf file. Feel free to modify it as you wish.\n\nresolver ${RESOLVER} valid=30s;"
|
||||||
|
echo -e "${RESOLVEROUTPUT}" > /config/nginx/resolver.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set worker_processes
|
||||||
|
touch /config/nginx/worker_processes.conf
|
||||||
|
if ! grep -q 'worker_processes' /config/nginx/worker_processes.conf; then
|
||||||
|
WORKER_PROCESSES=$(nproc)
|
||||||
|
echo "Setting worker_processes to ${WORKER_PROCESSES}"
|
||||||
|
echo -e "# This file is auto-generated only on first start, based on the cpu cores detected. Feel free to change it to any other number or to auto to let nginx handle it automatically.\n\nworker_processes ${WORKER_PROCESSES};" >/config/nginx/worker_processes.conf
|
||||||
|
fi
|
1
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/type
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/type
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
oneshot
|
1
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/up
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/init-nginx/up
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/etc/s6-overlay/s6-rc.d/init-nginx/run
|
0
dist/docker/etc/s6-overlay/s6-rc.d/nginx/dependencies.d/init-nginx
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/nginx/dependencies.d/init-nginx
vendored
Normal file
2
dist/docker/etc/s6-overlay/s6-rc.d/nginx/run
vendored
Executable file
2
dist/docker/etc/s6-overlay/s6-rc.d/nginx/run
vendored
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
exec nginx -c /config/nginx/nginx.conf
|
1
dist/docker/etc/s6-overlay/s6-rc.d/nginx/type
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/nginx/type
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
longrun
|
1
dist/docker/etc/s6-overlay/s6-rc.d/nginx/up
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/nginx/up
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/etc/s6-overlay/s6-rc.d/nginx/run
|
0
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/dependencies.d/init-config
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/dependencies.d/init-config
vendored
Normal file
2
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/run
vendored
Executable file
2
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/run
vendored
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
su-exec ook /usr/sbin/php-fpm83 -F
|
1
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/type
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/type
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
longrun
|
1
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/up
vendored
Normal file
1
dist/docker/etc/s6-overlay/s6-rc.d/php-fpm/up
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/etc/s6-overlay/s6-rc.d/php-fpm/run
|
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-config
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-config
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-nginx
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-nginx
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/nginx
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/nginx
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/php-fpm
vendored
Normal file
0
dist/docker/etc/s6-overlay/s6-rc.d/user/contents.d/php-fpm
vendored
Normal file
16
dist/docker/etc/service/init-arsse/run
vendored
16
dist/docker/etc/service/init-arsse/run
vendored
|
@ -1,16 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
while ! grep -qF "init-config: done"; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
logger -t 'init-arsse' "start" >> /var/log/run-log
|
|
||||||
|
|
||||||
chown -R ook:ook /app
|
|
||||||
|
|
||||||
if [ ! -d '/app/arsse/vendor' ]; then
|
|
||||||
cd /app/arsse
|
|
||||||
composer install
|
|
||||||
fi
|
|
||||||
|
|
||||||
logger -t 'init-arsse' "done" >> /var/log/run-log
|
|
11
dist/docker/etc/service/nginx/run
vendored
11
dist/docker/etc/service/nginx/run
vendored
|
@ -1,11 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
while ! grep -qF "init-arsse: done"; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
logger -t 'nginx' "start" >> /var/log/run-log
|
|
||||||
|
|
||||||
nginx -c /config/nginx/nginx.conf -g 'daemon off;'
|
|
||||||
|
|
||||||
logger -t 'nginx' "done" >> /var/log/run-log
|
|
Loading…
Reference in a new issue