Lots of improvements and simplifications.

* Collect all logs under the /var/log/koha directory.
* Setup logrotate
* Use a static instance name, leading to simpler configuration.
This commit is contained in:
Theodoros Grammenos 2023-02-13 05:31:42 +02:00
parent 737f738dc7
commit c16804a913
No known key found for this signature in database
GPG key ID: D25FBC869FCFEBDE
33 changed files with 78 additions and 71 deletions

View file

@ -2,6 +2,7 @@ FROM debian:bullseye
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
ARG S6_OVERLAY_VERSION=3.1.3.0 ARG S6_OVERLAY_VERSION=3.1.3.0
ARG S6_OVERLAY_ARCH="x86_64"
ARG KOHA_VERSION=22.11 ARG KOHA_VERSION=22.11
LABEL org.opencontainers.image.source=https://github.com/teorgamm/koha-docker LABEL org.opencontainers.image.source=https://github.com/teorgamm/koha-docker
@ -18,7 +19,7 @@ RUN apt-get update \
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz
RUN mkdir /etc/apt/keyrings/ && \ RUN mkdir /etc/apt/keyrings/ && \
@ -30,6 +31,7 @@ RUN apt-get update \
&& apt-get install -y koha-core \ && apt-get install -y koha-core \
idzebra-2.0 \ idzebra-2.0 \
apache2 libapache2-mpm-itk\ apache2 libapache2-mpm-itk\
logrotate \
&& rm -rf /var/cache/apt/archives/* \ && rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
@ -38,9 +40,12 @@ RUN a2enmod rewrite \
&& a2enmod proxy_http \ && a2enmod proxy_http \
&& a2enmod cgi \ && a2enmod cgi \
&& a2dissite 000-default \ && a2dissite 000-default \
&& echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf && echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf \
&& sed -E -i "s#^(export APACHE_LOG_DIR=).*#\1/var/log/koha/apache#g" /etc/apache2/envvars \
&& mkdir -p /var/log/koha/apache \
&& chown -R www-data:www-data /var/log/koha/apache
COPY files/ / COPY --chown 0:0 files/ /
WORKDIR /docker WORKDIR /docker
EXPOSE 2100 6001 8080 8081 EXPOSE 2100 6001 8080 8081

View file

@ -20,7 +20,7 @@ RUN apt-get update \
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz
RUN mkdir /etc/apt/keyrings/ && \ RUN mkdir /etc/apt/keyrings/ && \
wget -qO - https://debian.koha-community.org/koha/gpg.asc | gpg --dearmor -o /etc/apt/keyrings/koha.gpg && \ wget -qO - https://debian.koha-community.org/koha/gpg.asc | gpg --dearmor -o /etc/apt/keyrings/koha.gpg && \
@ -31,6 +31,7 @@ RUN apt-get update \
&& apt-get install -y koha-core \ && apt-get install -y koha-core \
idzebra-2.0 \ idzebra-2.0 \
apache2 libapache2-mpm-itk\ apache2 libapache2-mpm-itk\
logrotate \
&& rm -rf /var/cache/apt/archives/* \ && rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
@ -39,9 +40,12 @@ RUN a2enmod rewrite \
&& a2enmod proxy_http \ && a2enmod proxy_http \
&& a2enmod cgi \ && a2enmod cgi \
&& a2dissite 000-default \ && a2dissite 000-default \
&& echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf && echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf \
&& sed -E -i "s#^(export APACHE_LOG_DIR=).*#\1/var/log/koha/apache#g" /etc/apache2/envvars \
&& mkdir -p /var/log/koha/apache \
&& chown -R www-data:www-data /var/log/koha/apache
COPY files/ / COPY --chown 0:0 files/ /
WORKDIR /docker WORKDIR /docker
EXPOSE 2100 6001 8080 8081 EXPOSE 2100 6001 8080 8081

View file

@ -20,7 +20,7 @@ RUN apt-get update \
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz
RUN mkdir /etc/apt/keyrings/ && \ RUN mkdir /etc/apt/keyrings/ && \
wget -qO - https://debian.koha-community.org/koha/gpg.asc | gpg --dearmor -o /etc/apt/keyrings/koha.gpg && \ wget -qO - https://debian.koha-community.org/koha/gpg.asc | gpg --dearmor -o /etc/apt/keyrings/koha.gpg && \
@ -31,6 +31,7 @@ RUN apt-get update \
&& apt-get install -y koha-core \ && apt-get install -y koha-core \
idzebra-2.0 \ idzebra-2.0 \
apache2 libapache2-mpm-itk\ apache2 libapache2-mpm-itk\
logrotate \
&& rm -rf /var/cache/apt/archives/* \ && rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
@ -39,9 +40,12 @@ RUN a2enmod rewrite \
&& a2enmod proxy_http \ && a2enmod proxy_http \
&& a2enmod cgi \ && a2enmod cgi \
&& a2dissite 000-default \ && a2dissite 000-default \
&& echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf && echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf \
&& sed -E -i "s#^(export APACHE_LOG_DIR=).*#\1/var/log/koha/apache#g" /etc/apache2/envvars \
&& mkdir -p /var/log/koha/apache \
&& chown -R www-data:www-data /var/log/koha/apache
COPY files/ / COPY --chown 0:0 files/ /
WORKDIR /docker WORKDIR /docker
EXPOSE 2100 6001 8080 8081 EXPOSE 2100 6001 8080 8081

View file

@ -28,6 +28,8 @@ The main configuration environment variables are documented in
For a quick start check out the included [docker-compose](examples/docker-compose.yaml) file. For a quick start check out the included [docker-compose](examples/docker-compose.yaml) file.
Logs for stored under the `/var/log/koha` directory.
## Credits ## Credits
Some scripts have been taken from https://gitlab.com/koha-community/docker/koha-docker and modified. Some scripts have been taken from https://gitlab.com/koha-community/docker/koha-docker and modified.

View file

@ -1,32 +1,29 @@
# Your domain, with a dot prepended. # Hostname of your database server
# Example: .mydomain.com # Default: db
# Default: None (Optional) MYSQL_SERVER=
KOHA_DOMAIN= # Database name
# Please note that the URLs are built like this: # Default: koha_default
# OPAC: http://<OPACPREFIX><INSTANCE NAME><OPACSUFFIX><DOMAIN>:<OPACPORT> DB_NAME=
# STAFF: http://<INTRAPREFIX><INSTANCE NAME><INTRASUFFIX><DOMAIN>:<INTRAPORT> # Databse user
# Default: None (Optional) # Default: koha_default
KOHA_INTRANET_PREFIX= MYSQL_USER=
KOHA_INTRANET_SUFFIX= # Password of the database user and the default user used during onboarding
KOHA_OPAC_PREFIX= # Default: None (Required)
KOHA_OPAC_SUFFIX= MYSQL_PASSWORD=
# Name of the Koha instance
# Default:default
KOHA_INSTANCE=
# Space separated list of language codes to install. To list the available languages # Space separated list of language codes to install. To list the available languages
# run 'koha-translate -l' inside the container. # run 'koha-translate -l' inside the container.
# Default: None (Only English is installed) # Default: None (Only English is installed)
KOHA_LANGS= KOHA_LANGS=
# Hostname of your database server
# Default: mariadb
MYSQL_SERVER=
# Username of database user is koha_${INSTANCE_NAME}
# Password of the database user and the default user used during onboarding
# Default: None (Required)
MYSQL_PASSWORD=
ZEBRA_MARC_FORMAT=marc21 ZEBRA_MARC_FORMAT=marc21
# Elasticsearch options # Elasticsearch options
# If the ELASTICSEARCH_HOST variable is set the
# container is set yp to use Elasticsearch. A
# Zebra server is spawned inside the container,
# otherwise.
#ELASTICSEARCH_HOST= #ELASTICSEARCH_HOST=
#OVERRIDE_SYSPREF_SearchEngine=Elasticsearch #OVERRIDE_SYSPREF_SearchEngine=Elasticsearch

View file

@ -11,9 +11,10 @@ services:
- DAC_READ_SEARCH - DAC_READ_SEARCH
- SYS_NICE - SYS_NICE
environment: environment:
KOHA_INSTANCE: teolib
MYSQL_SERVER: db MYSQL_SERVER: db
MYSQL_USER: koha_teolib
MYSQL_PASSWORD: example MYSQL_PASSWORD: example
DB_NAME: koha_teolib
MEMCACHED_SERVERS: memcached:11211 MEMCACHED_SERVERS: memcached:11211
MB_HOST: rabbitmq MB_HOST: rabbitmq
depends_on: depends_on:

View file

@ -0,0 +1 @@
default

View file

@ -0,0 +1 @@
/etc/koha/sites/default/koha-conf.xml

View file

@ -0,0 +1 @@
/usr/share/koha

View file

@ -0,0 +1 @@
/usr/share/koha/lib

View file

@ -0,0 +1,14 @@
/var/log/koha/*/*.log {
rotate 5
weekly
missingok
copytruncate
compress
delaycompress
notifempty
sharedscripts
postrotate
/command/s6-svc -h /run/service/apache2
/command/s6-svc -r /run/service/plack
endscript
}

View file

@ -1,3 +1,7 @@
#!/command/execlineb -P #!/command/execlineb -P
fdmove -c 2 1 fdmove -c 2 1
apache2ctl -DFOREGROUND
trap { SIGTERM { apache2ctl stop }
SIGHUP { apache2ctl graceful } }
apache2ctl -D "FOREGROUND"

View file

@ -1 +0,0 @@
oneshot

View file

@ -1,4 +0,0 @@
#!/bin/sh
if { mkdir -p /var/log/cron }
if { chown nobody:nogroup /var/log/cron }
chmod 02755 /var/log/cron

View file

@ -1 +0,0 @@
cron-pipeline

View file

@ -1,2 +0,0 @@
#!/bin/sh
exec logutil-service /var/log/cron

View file

@ -1 +0,0 @@
longrun

View file

@ -1 +0,0 @@
cron-log

View file

@ -3,6 +3,4 @@ fdmove -c 2 1
s6-envdir /etc/koha-envvars s6-envdir /etc/koha-envvars
importas instancename INSTANCE_NAME /usr/bin/starman -M FindBin --socket /var/run/koha/default/plack.sock --max-requests 50 --workers 2 -E deployment --user=default-koha --group=default-koha --access-log /var/log/koha/default/plack.log --error-log /var/log/koha/default/plack-error.log "/etc/koha/plack.psgi"
/usr/bin/starman -M FindBin --socket /var/run/koha/${instancename}/plack.sock --max-requests 50 --workers 2 -E deployment --user=${instancename}-koha --group=${instancename}-koha --access-log /dev/stdout --error-log /dev/stdout "/etc/koha/plack.psgi"

View file

@ -1 +0,0 @@
oneshot

View file

@ -1 +0,0 @@
/etc/s6-overlay/scripts/01-setup-koha-envvars.sh

View file

@ -5,8 +5,6 @@ fdmove -c 2 1
s6-envdir /etc/koha-envvars s6-envdir /etc/koha-envvars
importas instancename INSTANCE_NAME s6-setuidgid default-koha
s6-setuidgid ${instancename}-koha
/usr/bin/perl /usr/share/koha/bin/background_jobs_worker.pl /usr/bin/perl /usr/share/koha/bin/background_jobs_worker.pl

View file

@ -3,8 +3,6 @@ fdmove -c 2 1
s6-envdir /etc/koha-envvars s6-envdir /etc/koha-envvars
importas instancename INSTANCE_NAME s6-setuidgid default-koha
s6-setuidgid ${instancename}-koha
/usr/bin/perl /usr/share/koha/bin/migration_tools/rebuild_zebra.pl -daemon -sleep 5 /usr/bin/perl /usr/share/koha/bin/migration_tools/rebuild_zebra.pl -daemon -sleep 5

View file

@ -1,10 +1,7 @@
#!/command/execlineb -P #!/command/execlineb -P
s6-envdir /etc/koha-envvars
fdmove -c 2 1 fdmove -c 2 1
importas instancename INSTANCE_NAME s6-setuidgid default-koha
s6-setuidgid ${instancename}-koha /usr/bin/zebrasrv -v 1 -f /etc/koha/sites/default/koha-conf.xml
/usr/bin/zebrasrv -v 1 -f /etc/koha/sites/${instancename}/koha-conf.xml

View file

@ -1,6 +0,0 @@
#!/command/with-contenv sh
mkdir -p /etc/koha-envvars
echo -n "/usr/share/koha/lib" > /etc/koha-envvars/PERL5LIB
echo -n "/etc/koha/sites/${KOHA_INSTANCE}/koha-conf.xml" > /etc/koha-envvars/KOHA_CONF
echo -n "/usr/share/koha" > /etc/koha-envvars/KOHA_HOME
echo -n "${KOHA_INSTANCE}" > /etc/koha-envvars/INSTANCE_NAME

View file

@ -1,12 +1,13 @@
#!/command/with-contenv bash #!/command/with-contenv bash
#if no koha instance name was provided, then set it as "default" export KOHA_INSTANCE=default
export KOHA_INSTANCE=${KOHA_INSTANCE:-default}
export KOHA_INTRANET_PORT=8081 export KOHA_INTRANET_PORT=8081
export KOHA_OPAC_PORT=8080 export KOHA_OPAC_PORT=8080
export MEMCACHED_SERVERS=${MEMCACHED_SERVERS:-memcached} export MEMCACHED_SERVERS=${MEMCACHED_SERVERS:-memcached}
export MYSQL_SERVER=${MYSQL_SERVER:-db} export MYSQL_SERVER=${MYSQL_SERVER:-db}
export DB_NAME=${DB_NAME:-koha_default}
export MYSQL_USER=${DB_NAME:-koha_default}
export MYSQL_PASSWORD=${MYSQL_PASSWORD:-$(pwgen -s 15 1)} export MYSQL_PASSWORD=${MYSQL_PASSWORD:-$(pwgen -s 15 1)}
export ZEBRA_MARC_FORMAT=${ZEBRA_MARC_FORMAT:-marc21} export ZEBRA_MARC_FORMAT=${ZEBRA_MARC_FORMAT:-marc21}
export KOHA_PLACK_NAME=${KOHA_PLACK_NAME:-koha} export KOHA_PLACK_NAME=${KOHA_PLACK_NAME:-koha}
@ -21,7 +22,7 @@ export MB_PASS=${MB_PASS:-guest}
envsubst < /docker/templates/koha-sites.conf > /etc/koha/koha-sites.conf envsubst < /docker/templates/koha-sites.conf > /etc/koha/koha-sites.conf
# Create entry with admin username, password and myqsl server for this instance # Create entry with admin username, password and myqsl server for this instance
echo -n "${KOHA_INSTANCE}:koha_${KOHA_INSTANCE}:${MYSQL_PASSWORD}:koha_${KOHA_INSTANCE}:${MYSQL_SERVER}" > /etc/koha/passwd echo -n "default:${MYSQL_USER}:${MYSQL_PASSWORD}:${DB_NAME}:${MYSQL_SERVER}" > /etc/koha/passwd
source /usr/share/koha/bin/koha-functions.sh source /usr/share/koha/bin/koha-functions.sh
@ -49,7 +50,6 @@ then
# Start zebra services with s6 # Start zebra services with s6
touch /etc/s6-overlay/s6-rc.d/user/contents.d/zebra-indexer touch /etc/s6-overlay/s6-rc.d/user/contents.d/zebra-indexer
touch /etc/s6-overlay/s6-rc.d/user/contents.d/zebra-server touch /etc/s6-overlay/s6-rc.d/user/contents.d/zebra-server
s6-rc-update
else else
koha-elasticsearch --rebuild -p $(grep -c ^processor /proc/cpuinfo) ${KOHA_INSTANCE} & koha-elasticsearch --rebuild -p $(grep -c ^processor /proc/cpuinfo) ${KOHA_INSTANCE} &
fi fi
@ -81,7 +81,7 @@ then
fi fi
done done
fi fi
koha-plack --enable ${KOHA_INSTANCE} koha-plack --enable ${KOHA_INSTANCE}
a2enmod proxy a2enmod proxy