Docker improvements (#5093)
This commit is contained in:
@@ -1,22 +1,44 @@
|
|||||||
# Source base [fpm/apache]
|
# _ ___ _
|
||||||
|
# | |/ (_)_ __ ___ __ _(_)
|
||||||
|
# | ' /| | '_ ` _ \ / _` | |
|
||||||
|
# | . \| | | | | | | (_| | |
|
||||||
|
# |_|\_\_|_| |_| |_|\__,_|_|
|
||||||
|
#
|
||||||
|
# Base images for:
|
||||||
|
# - plain PHP FPM
|
||||||
|
# - Apache with PHP
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# For production builds:
|
||||||
|
#
|
||||||
|
# docker build -t kimai/kimai-base:fpm --build-arg BASE=fpm .
|
||||||
|
# docker build -t kimai/kimai-base:apache --build-arg BASE=apache .
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# For local testing by maintainer:
|
||||||
|
#
|
||||||
|
# docker build -t kimai-local-fpm-base --build-arg BASE=fpm .
|
||||||
|
# docker build -t kimai-local-apache-base --build-arg BASE=apache .
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Documentation:
|
||||||
|
# https://hub.docker.com/_/php/
|
||||||
|
# https://github.com/docker-library/docs/blob/master/php/README.md#supported-tags-and-respective-dockerfile-links
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
ARG BASE="fpm"
|
ARG BASE="fpm"
|
||||||
ARG PHP_VER="8.2"
|
ARG TIMEZONE="Europe/Berlin"
|
||||||
ARG COMPOSER_VER="latest"
|
|
||||||
ARG TIMEZONE="Europe/London"
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# Shared tools
|
# Shared tools
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
# composer base image
|
# composer base image
|
||||||
FROM composer:${COMPOSER_VER} AS composer
|
FROM composer:latest AS composer
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# PHP extensions
|
# PHP extensions
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
# fpm alpine php extension base
|
# fpm alpine php extension base
|
||||||
FROM php:${PHP_VER}-fpm-alpine AS fpm-php-ext-base
|
FROM php:8.3-fpm-alpine AS fpm-php-ext-base
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
# build-tools
|
# build-tools
|
||||||
autoconf \
|
autoconf \
|
||||||
@@ -51,9 +73,8 @@ RUN apk add --no-cache \
|
|||||||
# xsl
|
# xsl
|
||||||
libxslt-dev
|
libxslt-dev
|
||||||
|
|
||||||
|
|
||||||
# apache debian php extension base
|
# apache debian php extension base
|
||||||
FROM php:${PHP_VER}-apache-bookworm AS apache-php-ext-base
|
FROM php:8.3-apache-bookworm AS apache-php-ext-base
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y \
|
RUN apt-get install -y \
|
||||||
libldap2-dev \
|
libldap2-dev \
|
||||||
@@ -63,7 +84,6 @@ RUN apt-get install -y \
|
|||||||
libxslt1-dev \
|
libxslt1-dev \
|
||||||
libfreetype6-dev
|
libfreetype6-dev
|
||||||
|
|
||||||
|
|
||||||
# php extension gd - 13.86s
|
# php extension gd - 13.86s
|
||||||
FROM ${BASE}-php-ext-base AS php-ext-gd
|
FROM ${BASE}-php-ext-base AS php-ext-gd
|
||||||
RUN docker-php-ext-configure gd \
|
RUN docker-php-ext-configure gd \
|
||||||
@@ -91,11 +111,6 @@ RUN docker-php-ext-install -j$(nproc) zip
|
|||||||
FROM ${BASE}-php-ext-base AS php-ext-xsl
|
FROM ${BASE}-php-ext-base AS php-ext-xsl
|
||||||
RUN docker-php-ext-install -j$(nproc) xsl
|
RUN docker-php-ext-install -j$(nproc) xsl
|
||||||
|
|
||||||
# php extension redis
|
|
||||||
FROM ${BASE}-php-ext-base AS php-ext-redis
|
|
||||||
RUN yes no | pecl install redis && \
|
|
||||||
docker-php-ext-enable redis
|
|
||||||
|
|
||||||
# php extension opcache
|
# php extension opcache
|
||||||
FROM ${BASE}-php-ext-base AS php-ext-opcache
|
FROM ${BASE}-php-ext-base AS php-ext-opcache
|
||||||
RUN docker-php-ext-install -j$(nproc) opcache
|
RUN docker-php-ext-install -j$(nproc) opcache
|
||||||
@@ -105,7 +120,7 @@ RUN docker-php-ext-install -j$(nproc) opcache
|
|||||||
###########################
|
###########################
|
||||||
|
|
||||||
# fpm base build
|
# fpm base build
|
||||||
FROM php:${PHP_VER}-fpm-alpine AS fpm-base
|
FROM php:8.3-fpm-alpine AS fpm-base
|
||||||
ARG TIMEZONE
|
ARG TIMEZONE
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
bash \
|
bash \
|
||||||
@@ -131,13 +146,11 @@ HEALTHCHECK --interval=20s --timeout=10s --retries=3 \
|
|||||||
REQUEST_METHOD=GET \
|
REQUEST_METHOD=GET \
|
||||||
cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1
|
cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# apache base build
|
# apache base build
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
FROM php:${PHP_VER}-apache-bookworm AS apache-base
|
FROM php:8.3-apache-bookworm AS apache-base
|
||||||
ARG TIMEZONE
|
ARG TIMEZONE
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
@@ -158,8 +171,6 @@ EXPOSE 8001
|
|||||||
HEALTHCHECK --interval=20s --timeout=10s --retries=3 \
|
HEALTHCHECK --interval=20s --timeout=10s --retries=3 \
|
||||||
CMD curl -f http://127.0.0.1:8001 || exit 1
|
CMD curl -f http://127.0.0.1:8001 || exit 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# global base build
|
# global base build
|
||||||
###########################
|
###########################
|
||||||
@@ -172,8 +183,9 @@ RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} >
|
|||||||
# make composer home dir
|
# make composer home dir
|
||||||
mkdir /composer && \
|
mkdir /composer && \
|
||||||
chown -R www-data:www-data /composer && \
|
chown -R www-data:www-data /composer && \
|
||||||
echo "echo -e This imnage is not intended to be used stand alone. It's a base image\necho for the Kimai project. https://www.kimai.org\n" > /entrypoint.sh && \
|
echo "echo \"This image is not intended to be used stand alone. It's a base image for the Kimai project.\"" > /entrypoint.sh && \
|
||||||
chmod 777 /entrypoint.sh
|
chmod 777 /entrypoint.sh
|
||||||
|
|
||||||
# copy composer
|
# copy composer
|
||||||
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
@@ -181,28 +193,23 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer
|
|||||||
|
|
||||||
# PHP extension xsl
|
# PHP extension xsl
|
||||||
COPY --from=php-ext-xsl /usr/local/etc/php/conf.d/docker-php-ext-xsl.ini /usr/local/etc/php/conf.d/docker-php-ext-xsl.ini
|
COPY --from=php-ext-xsl /usr/local/etc/php/conf.d/docker-php-ext-xsl.ini /usr/local/etc/php/conf.d/docker-php-ext-xsl.ini
|
||||||
COPY --from=php-ext-xsl /usr/local/lib/php/extensions/no-debug-non-zts-20220829/xsl.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/xsl.so
|
COPY --from=php-ext-xsl /usr/local/lib/php/extensions/no-debug-non-zts-20230831/xsl.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/xsl.so
|
||||||
# PHP extension pdo_mysql
|
# PHP extension pdo_mysql
|
||||||
COPY --from=php-ext-pdo_mysql /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
|
COPY --from=php-ext-pdo_mysql /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
|
||||||
COPY --from=php-ext-pdo_mysql /usr/local/lib/php/extensions/no-debug-non-zts-20220829/pdo_mysql.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/pdo_mysql.so
|
COPY --from=php-ext-pdo_mysql /usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so
|
||||||
# PHP extension zip
|
# PHP extension zip
|
||||||
COPY --from=php-ext-zip /usr/local/etc/php/conf.d/docker-php-ext-zip.ini /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
|
COPY --from=php-ext-zip /usr/local/etc/php/conf.d/docker-php-ext-zip.ini /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
|
||||||
COPY --from=php-ext-zip /usr/local/lib/php/extensions/no-debug-non-zts-20220829/zip.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/zip.so
|
COPY --from=php-ext-zip /usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so
|
||||||
# PHP extension ldap
|
# PHP extension ldap
|
||||||
COPY --from=php-ext-ldap /usr/local/etc/php/conf.d/docker-php-ext-ldap.ini /usr/local/etc/php/conf.d/docker-php-ext-ldap.ini
|
COPY --from=php-ext-ldap /usr/local/etc/php/conf.d/docker-php-ext-ldap.ini /usr/local/etc/php/conf.d/docker-php-ext-ldap.ini
|
||||||
COPY --from=php-ext-ldap /usr/local/lib/php/extensions/no-debug-non-zts-20220829/ldap.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/ldap.so
|
COPY --from=php-ext-ldap /usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so
|
||||||
# PHP extension gd
|
# PHP extension gd
|
||||||
COPY --from=php-ext-gd /usr/local/etc/php/conf.d/docker-php-ext-gd.ini /usr/local/etc/php/conf.d/docker-php-ext-gd.ini
|
COPY --from=php-ext-gd /usr/local/etc/php/conf.d/docker-php-ext-gd.ini /usr/local/etc/php/conf.d/docker-php-ext-gd.ini
|
||||||
COPY --from=php-ext-gd /usr/local/lib/php/extensions/no-debug-non-zts-20220829/gd.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/gd.so
|
COPY --from=php-ext-gd /usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so
|
||||||
# PHP extension intl
|
# PHP extension intl
|
||||||
COPY --from=php-ext-intl /usr/local/etc/php/conf.d/docker-php-ext-intl.ini /usr/local/etc/php/conf.d/docker-php-ext-intl.ini
|
COPY --from=php-ext-intl /usr/local/etc/php/conf.d/docker-php-ext-intl.ini /usr/local/etc/php/conf.d/docker-php-ext-intl.ini
|
||||||
COPY --from=php-ext-intl /usr/local/lib/php/extensions/no-debug-non-zts-20220829/intl.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/intl.so
|
COPY --from=php-ext-intl /usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so /usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so
|
||||||
# PHP extension redis
|
# PHP extension opcache
|
||||||
COPY --from=php-ext-redis /usr/local/etc/php/conf.d/docker-php-ext-redis.ini /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
|
|
||||||
COPY --from=php-ext-redis /usr/local/lib/php/extensions/no-debug-non-zts-20220829/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20220829/redis.so
|
|
||||||
COPY --from=php-ext-opcache /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
COPY --from=php-ext-opcache /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
||||||
|
|
||||||
CMD [ "/entrypoint.sh" ]
|
CMD [ "/entrypoint.sh" ]
|
||||||
|
|
||||||
# docker build -t kimai/kimai-base:fpm --build-arg BASE=fpm .
|
|
||||||
# docker build -t kimai/kimai-base:apache --build-arg BASE=apache .
|
|
||||||
@@ -6,9 +6,6 @@ $DATABASE_USER = urldecode($argv[4]);
|
|||||||
$DATABASE_PASS = urldecode($argv[5]);
|
$DATABASE_PASS = urldecode($argv[5]);
|
||||||
|
|
||||||
echo "Testing DB:";
|
echo "Testing DB:";
|
||||||
echo "*";
|
|
||||||
echo "* new \PDO(mysql:host=$DATABASE_HOST;dbname=$DATABASE_BASE;port=$DATABASE_PORT, $DATABASE_USER, $DATABASE_PASS, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ]);";
|
|
||||||
echo "*";
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$pdo = new \PDO("mysql:host=$DATABASE_HOST;dbname=$DATABASE_BASE;port=$DATABASE_PORT", "$DATABASE_USER", "$DATABASE_PASS", [
|
$pdo = new \PDO("mysql:host=$DATABASE_HOST;dbname=$DATABASE_BASE;port=$DATABASE_PORT", "$DATABASE_USER", "$DATABASE_PASS", [
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/startup.sh 2>&1
|
|
||||||
echo $$ > /tmp/startup.pid
|
|
||||||
echo "Waiting for kimai to install"
|
|
||||||
while [ ! -f /opt/kimai/var/installed ]; do
|
|
||||||
echo -n ". "
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Test FPM CGI
|
|
||||||
if [ -f /use_fpm ]; then
|
|
||||||
|
|
||||||
export SCRIPT_NAME=/opt/kimai/public/index.php
|
|
||||||
export SCRIPT_FILENAME=/opt/kimai/public/index.php
|
|
||||||
export REQUEST_METHOD=GET
|
|
||||||
export SERVER_ADDR=localhost
|
|
||||||
|
|
||||||
COUNT=0
|
|
||||||
until cgi-fcgi -bind -connect 127.0.0.1:9000 &> /dev/null
|
|
||||||
do
|
|
||||||
COUNT=$((COUNT+1))
|
|
||||||
echo "Waiting for FPM Server to start (${COUNT})"
|
|
||||||
sleep 3
|
|
||||||
if [ "$COUNT" -gt 5 ]; then
|
|
||||||
echo "FPM Failed to start."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test Apache/httpd
|
|
||||||
if [ -f /use_apache ]; then
|
|
||||||
|
|
||||||
COUNT=0
|
|
||||||
until curl -s -o /dev/null http://localhost:8001
|
|
||||||
do
|
|
||||||
COUNT=$((COUNT+1))
|
|
||||||
echo "Waiting for Apache/HTTP to start (${COUNT})" &> /dev/null
|
|
||||||
sleep 3
|
|
||||||
if [ "$COUNT" -gt 5 ]; then
|
|
||||||
echo "Apache/HTTP failed to start."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test PHP/Kimai
|
|
||||||
/opt/kimai/bin/console kimai:version
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
echo "PHP/Kimai not responding"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
kill $(cat /tmp/startup.pid)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash -x
|
|
||||||
|
|
||||||
function waitForDB() {
|
|
||||||
# Parse sql connection data
|
|
||||||
DATABASE_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL")
|
|
||||||
DATABASE_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
|
|
||||||
DATABASE_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
|
|
||||||
DATABASE_PORT=$(awk -F '[/:@]' '{print $7}' <<< "$DATABASE_URL")
|
|
||||||
DATABASE_BASE=$(awk -F '[/?]' '{print $4}' <<< "$DATABASE_URL")
|
|
||||||
|
|
||||||
re='^[0-9]+$'
|
|
||||||
if ! [[ $DATABASE_PORT =~ $re ]] ; then
|
|
||||||
DATABASE_PORT=3306
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Wait for database connection ..."
|
|
||||||
until php /dbtest.php "$DATABASE_HOST" "$DATABASE_BASE" "$DATABASE_PORT" "$DATABASE_USER" "$DATABASE_PASS"; do
|
|
||||||
echo Checking DB: $?
|
|
||||||
sleep 3
|
|
||||||
done
|
|
||||||
echo "Connection established"
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleStartup() {
|
|
||||||
# These are idempotent, so we can run them on every start-up
|
|
||||||
/opt/kimai/bin/console -n kimai:install
|
|
||||||
/opt/kimai/bin/console -n kimai:update
|
|
||||||
if [ ! -z "$ADMINPASS" ] && [ ! -a "$ADMINMAIL" ]; then
|
|
||||||
/opt/kimai/bin/console kimai:user:create admin "$ADMINMAIL" ROLE_SUPER_ADMIN "$ADMINPASS"
|
|
||||||
fi
|
|
||||||
echo "$KIMAI" > /opt/kimai/var/installed
|
|
||||||
echo "Kimai is ready"
|
|
||||||
}
|
|
||||||
|
|
||||||
function runServer() {
|
|
||||||
# Just while I'm fixing things
|
|
||||||
/opt/kimai/bin/console kimai:reload --env="$APP_ENV"
|
|
||||||
chown -R $USER_ID:$GROUP_ID /opt/kimai/var
|
|
||||||
if [ -e /use_apache ]; then
|
|
||||||
exec /usr/sbin/apache2 -D FOREGROUND
|
|
||||||
elif [ -e /use_fpm ]; then
|
|
||||||
exec php-fpm
|
|
||||||
else
|
|
||||||
echo "Error, unknown server type"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
waitForDB
|
|
||||||
handleStartup
|
|
||||||
runServer
|
|
||||||
@@ -3,12 +3,8 @@
|
|||||||
KIMAI=$(cat /opt/kimai/version.txt)
|
KIMAI=$(cat /opt/kimai/version.txt)
|
||||||
echo $KIMAI
|
echo $KIMAI
|
||||||
|
|
||||||
function config() {
|
function waitForDB() {
|
||||||
# set mem limits and copy in custom logger config
|
# Parse sql connection data
|
||||||
if [ -z "$memory_limit" ]; then
|
|
||||||
memory_limit=256M
|
|
||||||
fi
|
|
||||||
|
|
||||||
DATABASE_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL")
|
DATABASE_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL")
|
||||||
DATABASE_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
|
DATABASE_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
|
||||||
DATABASE_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
|
DATABASE_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
|
||||||
@@ -30,11 +26,12 @@ function config() {
|
|||||||
|
|
||||||
function handleStartup() {
|
function handleStartup() {
|
||||||
# set mem limits and copy in custom logger config
|
# set mem limits and copy in custom logger config
|
||||||
|
if [ -z "$memory_limit" ]; then
|
||||||
|
memory_limit=512M
|
||||||
|
fi
|
||||||
sed -i "s/memory_limit.*/memory_limit=$memory_limit/g" /usr/local/etc/php/php.ini
|
sed -i "s/memory_limit.*/memory_limit=$memory_limit/g" /usr/local/etc/php/php.ini
|
||||||
cp /assets/monolog.yaml /opt/kimai/config/packages/monolog.yaml
|
cp /assets/monolog.yaml /opt/kimai/config/packages/monolog.yaml
|
||||||
|
|
||||||
tar -zx -C /opt/kimai -f /var/tmp/public.tgz
|
|
||||||
|
|
||||||
if [ -z "$USER_ID" ]; then
|
if [ -z "$USER_ID" ]; then
|
||||||
USER_ID=$(id -u www-data)
|
USER_ID=$(id -u www-data)
|
||||||
fi
|
fi
|
||||||
@@ -76,7 +73,31 @@ function handleStartup() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
config
|
function prepareKimai() {
|
||||||
handleStartup
|
# These are idempotent, so we can run them on every start-up
|
||||||
|
/opt/kimai/bin/console -n kimai:install
|
||||||
|
/opt/kimai/bin/console -n kimai:update
|
||||||
|
if [ ! -z "$ADMINPASS" ] && [ ! -a "$ADMINMAIL" ]; then
|
||||||
|
/opt/kimai/bin/console kimai:user:create admin "$ADMINMAIL" ROLE_SUPER_ADMIN "$ADMINPASS"
|
||||||
|
fi
|
||||||
|
echo "$KIMAI" > /opt/kimai/var/installed
|
||||||
|
echo "Kimai is ready"
|
||||||
|
}
|
||||||
|
|
||||||
exec /service.sh
|
function runServer() {
|
||||||
|
# Just while I'm fixing things
|
||||||
|
/opt/kimai/bin/console kimai:reload --env="$APP_ENV"
|
||||||
|
chown -R $USER_ID:$GROUP_ID /opt/kimai/var
|
||||||
|
if [ -e /use_apache ]; then
|
||||||
|
exec /usr/sbin/apache2 -D FOREGROUND
|
||||||
|
elif [ -e /use_fpm ]; then
|
||||||
|
exec php-fpm
|
||||||
|
else
|
||||||
|
echo "Error, unknown server type"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
waitForDB
|
||||||
|
handleStartup
|
||||||
|
prepareKimai
|
||||||
|
runServer
|
||||||
|
|||||||
3
.github/workflows/docker-base.yaml
vendored
3
.github/workflows/docker-base.yaml
vendored
@@ -31,9 +31,8 @@ jobs:
|
|||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
context: .docker
|
context: .docker
|
||||||
file: .docker/Dockerfile.kimai-base
|
file: .docker/Dockerfile
|
||||||
build-args: |
|
build-args: |
|
||||||
TIMEZONE=Europe/London
|
|
||||||
BASE=${{ matrix.server }}
|
BASE=${{ matrix.server }}
|
||||||
platforms: linux/amd64,linux/arm64 #,linux/arm/v8,linux/arm/v7,linux/arm/v6
|
platforms: linux/amd64,linux/arm64 #,linux/arm/v8,linux/arm/v7,linux/arm/v6
|
||||||
tags: |
|
tags: |
|
||||||
|
|||||||
2
.github/workflows/docker.yaml
vendored
2
.github/workflows/docker.yaml
vendored
@@ -40,7 +40,6 @@ jobs:
|
|||||||
context: .
|
context: .
|
||||||
build-args: |
|
build-args: |
|
||||||
KIMAI=${{ env.kimai_version }}
|
KIMAI=${{ env.kimai_version }}
|
||||||
TIMEZONE=Europe/London
|
|
||||||
BASE=${{ matrix.server }}
|
BASE=${{ matrix.server }}
|
||||||
target: prod
|
target: prod
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
@@ -56,7 +55,6 @@ jobs:
|
|||||||
context: .
|
context: .
|
||||||
build-args: |
|
build-args: |
|
||||||
KIMAI=${{ env.kimai_version }}
|
KIMAI=${{ env.kimai_version }}
|
||||||
TIMEZONE=Europe/London
|
|
||||||
BASE=apache
|
BASE=apache
|
||||||
target: dev
|
target: dev
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|||||||
29
Dockerfile
29
Dockerfile
@@ -4,11 +4,18 @@
|
|||||||
# | . \| | | | | | | (_| | |
|
# | . \| | | | | | | (_| | |
|
||||||
# |_|\_\_|_| |_| |_|\__,_|_|
|
# |_|\_\_|_| |_| |_|\__,_|_|
|
||||||
#
|
#
|
||||||
|
# Kimai images for:
|
||||||
|
# - plain PHP FPM
|
||||||
|
# - Apache with PHP
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# For local testing by maintainer:
|
||||||
|
#
|
||||||
|
# docker build -t kimai-local-fpm --build-arg BASE=fpm .
|
||||||
|
# docker build -t kimai-local-apache --build-arg BASE=apache .
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
# Source base [fpm/apache]
|
# Source base [fpm/apache]
|
||||||
ARG BASE="fpm"
|
ARG BASE="fpm"
|
||||||
ARG PHP_VER="8.2"
|
|
||||||
ARG COMPOSER_VER="latest"
|
|
||||||
# Branch name
|
# Branch name
|
||||||
ARG KIMAI="main"
|
ARG KIMAI="main"
|
||||||
# Timezone for images
|
# Timezone for images
|
||||||
@@ -31,9 +38,10 @@ FROM git-dev AS git-prod
|
|||||||
WORKDIR /opt/kimai
|
WORKDIR /opt/kimai
|
||||||
RUN rm -r tests
|
RUN rm -r tests
|
||||||
|
|
||||||
|
|
||||||
# FPM base
|
# FPM base
|
||||||
FROM kimai/kimai-base:fpm AS fpm-base
|
FROM kimai/kimai-base:fpm AS fpm-base
|
||||||
|
RUN sed -i "s/;ping.path/ping.path/g" /usr/local/etc/php-fpm.d/www.conf && \
|
||||||
|
sed -i "s/;access.suppress_path\[\] = \/ping/access.suppress_path\[\] = \/ping/g" /usr/local/etc/php-fpm.d/www.conf
|
||||||
|
|
||||||
# Apache base
|
# Apache base
|
||||||
FROM kimai/kimai-base:apache AS apache-base
|
FROM kimai/kimai-base:apache AS apache-base
|
||||||
@@ -65,12 +73,10 @@ RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} >
|
|||||||
chown -R www-data:www-data /composer
|
chown -R www-data:www-data /composer
|
||||||
|
|
||||||
# copy startup script & DB checking script
|
# copy startup script & DB checking script
|
||||||
COPY .docker/startup.sh /startup.sh
|
|
||||||
COPY .docker/service.sh /service.sh
|
|
||||||
COPY .docker/self-test.sh /self-test.sh
|
|
||||||
COPY .docker/dbtest.php /dbtest.php
|
COPY .docker/dbtest.php /dbtest.php
|
||||||
|
COPY .docker/startup.sh /startup.sh
|
||||||
|
|
||||||
ENV DATABASE_URL="mysql://kimai:kimai@127.0.0.1:3306/kimai?charset=utf8mb4&serverVersion=5.7.40"
|
ENV DATABASE_URL="mysql://kimai:kimai@127.0.0.1:3306/kimai?charset=utf8mb4&serverVersion=8.3"
|
||||||
ENV APP_SECRET=change_this_to_something_unique
|
ENV APP_SECRET=change_this_to_something_unique
|
||||||
# The default container name for nginx is nginx
|
# The default container name for nginx is nginx
|
||||||
ENV TRUSTED_PROXIES=nginx,localhost,127.0.0.1
|
ENV TRUSTED_PROXIES=nginx,localhost,127.0.0.1
|
||||||
@@ -89,12 +95,11 @@ VOLUME [ "/opt/kimai/var" ]
|
|||||||
|
|
||||||
CMD [ "/startup.sh" ]
|
CMD [ "/startup.sh" ]
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# final builds
|
# final builds
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
# developement build
|
# development build
|
||||||
FROM base AS dev
|
FROM base AS dev
|
||||||
# copy kimai develop source
|
# copy kimai develop source
|
||||||
COPY --from=git-dev --chown=www-data:www-data /opt/kimai /opt/kimai
|
COPY --from=git-dev --chown=www-data:www-data /opt/kimai /opt/kimai
|
||||||
@@ -111,11 +116,10 @@ RUN \
|
|||||||
mkdir -p /opt/kimai/var/logs && chmod 777 /opt/kimai/var/logs && \
|
mkdir -p /opt/kimai/var/logs && chmod 777 /opt/kimai/var/logs && \
|
||||||
sed "s/128M/-1/g" /usr/local/etc/php/php.ini-development > /opt/kimai/php-cli.ini && \
|
sed "s/128M/-1/g" /usr/local/etc/php/php.ini-development > /opt/kimai/php-cli.ini && \
|
||||||
sed -i "s/env php/env -S php -c \/opt\/kimai\/php-cli.ini/g" /opt/kimai/bin/console && \
|
sed -i "s/env php/env -S php -c \/opt\/kimai\/php-cli.ini/g" /opt/kimai/bin/console && \
|
||||||
tar -C /opt/kimai -zcvf /var/tmp/public.tgz public && \
|
|
||||||
/opt/kimai/bin/console kimai:version | awk '{print $2}' > /opt/kimai/version.txt
|
/opt/kimai/bin/console kimai:version | awk '{print $2}' > /opt/kimai/version.txt
|
||||||
ENV APP_ENV=dev
|
ENV APP_ENV=dev
|
||||||
ENV DATABASE_URL=
|
ENV DATABASE_URL=
|
||||||
ENV memory_limit=256M
|
ENV memory_limit=512M
|
||||||
|
|
||||||
# production build
|
# production build
|
||||||
FROM base AS prod
|
FROM base AS prod
|
||||||
@@ -139,8 +143,7 @@ RUN \
|
|||||||
mkdir -p /opt/kimai/var/logs && chmod 777 /opt/kimai/var/logs && \
|
mkdir -p /opt/kimai/var/logs && chmod 777 /opt/kimai/var/logs && \
|
||||||
sed "s/128M/-1/g" /usr/local/etc/php/php.ini-development > /opt/kimai/php-cli.ini && \
|
sed "s/128M/-1/g" /usr/local/etc/php/php.ini-development > /opt/kimai/php-cli.ini && \
|
||||||
chown -R www-data:www-data /opt/kimai /usr/local/etc/php/php.ini && \
|
chown -R www-data:www-data /opt/kimai /usr/local/etc/php/php.ini && \
|
||||||
tar -C /opt/kimai -zcvf /var/tmp/public.tgz public && \
|
|
||||||
/opt/kimai/bin/console kimai:version | awk '{print $2}' > /opt/kimai/version.txt
|
/opt/kimai/bin/console kimai:version | awk '{print $2}' > /opt/kimai/version.txt
|
||||||
ENV APP_ENV=prod
|
ENV APP_ENV=prod
|
||||||
ENV DATABASE_URL=
|
ENV DATABASE_URL=
|
||||||
ENV memory_limit=256M
|
ENV memory_limit=512M
|
||||||
|
|||||||
Reference in New Issue
Block a user