diff --git a/README.md b/README.md new file mode 100644 index 0000000..aa4aec2 --- /dev/null +++ b/README.md @@ -0,0 +1,89 @@ +# Description + +This image provides the nginx and apache version of the Kimai2 time tracking system. For more information about Kimai2, go [here](https://www.kimai.org/). + +# Features + +Turn-key installation based on environment variables passed to the container. Creates initial super user on first install. Currently based on project's [master](https://github.com/kevinpapst/kimai2/). + +# Usage + +## docker-compose (preferred) + +The recommended way of running is by using [jwilder/nginx-proxy](jwilder/nginx-proxy) as follows. + +### With nginx-proxy + +For installations where there is a bridged network dedicated to nginx proxy: + +```yml +version: '3.7' +services: + kimai: + image: bkraul/kimai2:nginx-alpine + volumes: + - /etc/localtime:/etc/localtime:ro + - ./local.yaml:/app/config/packages/local.yaml + environment: + # nginx-proxy + - VIRTUAL_HOST=kimai.mydomain.com + - PHP_DATE_TIMEZONE=America/Chicago + # kimai2 + - APP_ENV=prod + - DATABASE_URL=mysql://validsqlurl + - MAILER_FROM=kimai@mydomain.com + - MAILER_URL=smtp://validsmtpurl + - APP_SECRET=Superdupersecret + # initial admin user + - APP_ADMIN_USER=master + - APP_ADMIN_EMAIL=master@mydomain.com + - APP_ADMIN_PASS=masterPassword + networks: + - reverse-proxy + +networks: + reverse-proxy: + external: + name: reverse-proxy +``` + +### Without nginx-proxy + +For installations without nginx-proxy, a port usually needs to be mapped. The exposed ports in the container are 80 and 443 (see here for how) + +``` +version: '3.7' +services: + kimai: + image: bkraul/kimai2:nginx-alpine + volumes: + - /etc/localtime:/etc/localtime:ro + - ./local.yaml:/app/config/packages/local.yaml + ports: + - '8001:80' + environment: + # web server + - PHP_DATE_TIMEZONE=America/Chicago + # kimai2 + - APP_ENV=prod + - DATABASE_URL=mysql://validsqlurl + - MAILER_FROM=kimai@mydomain.com + - MAILER_URL=smtp://validsmtpurl + - APP_SECRET=Superdupersecret + # initial admin user + - APP_ADMIN_USER=master + - APP_ADMIN_EMAIL=master@mydomain.com + - APP_ADMIN_PASS=masterPassword +``` + +# Environment variables + +* `PHP_DATE_TIMEZONE`: Sets the correct php timezone. +* `APP_ENV`: The current kimai environment, [`dev, prod (default)`] +* `DATABASE_URL`: Valid URL for database. Use `mysql://user:pass@server.tld/database` +* `MAILER_FROM`: The from address for the mailing system. +* `MAILER_URL`: Valid swift mailer format URL. i.e. `smtp://server.tld:25?encryption=ssl&auth_mode=login&username=&password=` +* `APP_SECRET`: The encryption secret for the app. +* `APP_ADMIN_USER`: The user name for the first super admin to be created automatically. +* `APP_ADMIN_EMAIL`: First super admin email. +* `APP_ADMIN_PASS`: First super admin password. \ No newline at end of file diff --git a/apache-alpine/50-kimai-init.sh b/apache-alpine/50-kimai-init.sh index 8df1135..791194c 100644 --- a/apache-alpine/50-kimai-init.sh +++ b/apache-alpine/50-kimai-init.sh @@ -7,9 +7,5 @@ echo MAILER_FROM=${MAILER_FROM} >> /app/.env echo MAILER_URL=${MAILER_URL} >> /app/.env chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env -su -c "/app/bin/console cache:clear --env=${APP_ENV} || true" -l application -su -c "cd /app && composer install --optimize-autoloader || true" -l application -su -c "/app/bin/console doctrine:schema:create || true" -l application -su -c "/app/bin/console doctrine:migrations:version --add --all -n || true" -l application -su -c "/app/bin/console cache:warmup --env=${APP_ENV} || true" -l application -su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application \ No newline at end of file +su -c "/app/bin/console kimai:install || true" -l application +su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application diff --git a/apache-ubuntu-18.04/50-kimai-init.sh b/apache-ubuntu-18.04/50-kimai-init.sh index 8df1135..791194c 100644 --- a/apache-ubuntu-18.04/50-kimai-init.sh +++ b/apache-ubuntu-18.04/50-kimai-init.sh @@ -7,9 +7,5 @@ echo MAILER_FROM=${MAILER_FROM} >> /app/.env echo MAILER_URL=${MAILER_URL} >> /app/.env chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env -su -c "/app/bin/console cache:clear --env=${APP_ENV} || true" -l application -su -c "cd /app && composer install --optimize-autoloader || true" -l application -su -c "/app/bin/console doctrine:schema:create || true" -l application -su -c "/app/bin/console doctrine:migrations:version --add --all -n || true" -l application -su -c "/app/bin/console cache:warmup --env=${APP_ENV} || true" -l application -su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application \ No newline at end of file +su -c "/app/bin/console kimai:install || true" -l application +su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application diff --git a/develop/50-kimai-init.sh b/develop/50-kimai-init.sh new file mode 100644 index 0000000..791194c --- /dev/null +++ b/develop/50-kimai-init.sh @@ -0,0 +1,11 @@ +#!/bin + +echo Refreshing .env file... +echo APP_ENV=${APP_ENV} > /app/.env +echo DATABASE_URL=${DATABASE_URL} >> /app/.env +echo MAILER_FROM=${MAILER_FROM} >> /app/.env +echo MAILER_URL=${MAILER_URL} >> /app/.env +chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env + +su -c "/app/bin/console kimai:install || true" -l application +su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application diff --git a/develop/Dockerfile b/develop/Dockerfile new file mode 100644 index 0000000..2b82f16 --- /dev/null +++ b/develop/Dockerfile @@ -0,0 +1,18 @@ +FROM webdevops/php-nginx:alpine +MAINTAINER Belman Kraul + +ENV \ + WEB_DOCUMENT_ROOT="/app/public" + +RUN git clone https://github.com/kevinpapst/kimai2.git -b install-command /app && \ + sed "s/prod/dev/g" /app/.env.dist > /app/.env && \ + chown -R ${APPLICATION_UID}:${APPLICATION_GID} /app && \ + su -c '/usr/local/bin/composer install --working-dir=/app --optimize-autoloader' -l application && \ + su -c '/usr/local/bin/composer require zendframework/zend-ldap --working-dir=/app' -l application && \ + rm /app/.env && \ + touch /app/.env && \ + chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env + +COPY ./50-kimai-init.sh /opt/docker/provision/entrypoint.d/50-kimai-init.sh + +WORKDIR /app diff --git a/develop/Dockerfile.bak b/develop/Dockerfile.bak new file mode 100644 index 0000000..7f3058a --- /dev/null +++ b/develop/Dockerfile.bak @@ -0,0 +1,18 @@ +FROM webdevops/php-nginx:alpine +MAINTAINER Belman Kraul + +ENV \ + WEB_DOCUMENT_ROOT="/app/public" + +RUN git clone https://github.com/kevinpapst/kimai2.git /app && \ + sed "s/prod/dev/g" /app/.env.dist > /app/.env && \ + chown -R ${APPLICATION_UID}:${APPLICATION_GID} /app && \ + su -c '/usr/local/bin/composer install --working-dir=/app --optimize-autoloader' -l application && \ + su -c '/usr/local/bin/composer require zendframework/zend-ldap --working-dir=/app' -l application && \ + rm /app/.env && \ + touch /app/.env && \ + chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env + +COPY ./50-kimai-init.sh /opt/docker/provision/entrypoint.d/50-kimai-init.sh + +WORKDIR /app \ No newline at end of file diff --git a/develop/build b/develop/build new file mode 100644 index 0000000..fb8c59b --- /dev/null +++ b/develop/build @@ -0,0 +1,7 @@ +#!/bin/sh + +docker pull webdevops/php-nginx:alpine +docker build $1\ + -t bkraul/kimai2:develop \ + . + diff --git a/nginx-alpine/50-kimai-init.sh b/nginx-alpine/50-kimai-init.sh index 8df1135..791194c 100644 --- a/nginx-alpine/50-kimai-init.sh +++ b/nginx-alpine/50-kimai-init.sh @@ -7,9 +7,5 @@ echo MAILER_FROM=${MAILER_FROM} >> /app/.env echo MAILER_URL=${MAILER_URL} >> /app/.env chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env -su -c "/app/bin/console cache:clear --env=${APP_ENV} || true" -l application -su -c "cd /app && composer install --optimize-autoloader || true" -l application -su -c "/app/bin/console doctrine:schema:create || true" -l application -su -c "/app/bin/console doctrine:migrations:version --add --all -n || true" -l application -su -c "/app/bin/console cache:warmup --env=${APP_ENV} || true" -l application -su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application \ No newline at end of file +su -c "/app/bin/console kimai:install || true" -l application +su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application diff --git a/nginx-alpine/Dockerfile b/nginx-alpine/Dockerfile index 7f3058a..8c43299 100644 --- a/nginx-alpine/Dockerfile +++ b/nginx-alpine/Dockerfile @@ -15,4 +15,4 @@ RUN git clone https://github.com/kevinpapst/kimai2.git /app && \ COPY ./50-kimai-init.sh /opt/docker/provision/entrypoint.d/50-kimai-init.sh -WORKDIR /app \ No newline at end of file +WORKDIR /app diff --git a/nginx-ubuntu-18.04/50-kimai-init.sh b/nginx-ubuntu-18.04/50-kimai-init.sh index 8df1135..791194c 100644 --- a/nginx-ubuntu-18.04/50-kimai-init.sh +++ b/nginx-ubuntu-18.04/50-kimai-init.sh @@ -7,9 +7,5 @@ echo MAILER_FROM=${MAILER_FROM} >> /app/.env echo MAILER_URL=${MAILER_URL} >> /app/.env chown ${APPLICATION_UID}:${APPLICATION_GID} /app/.env -su -c "/app/bin/console cache:clear --env=${APP_ENV} || true" -l application -su -c "cd /app && composer install --optimize-autoloader || true" -l application -su -c "/app/bin/console doctrine:schema:create || true" -l application -su -c "/app/bin/console doctrine:migrations:version --add --all -n || true" -l application -su -c "/app/bin/console cache:warmup --env=${APP_ENV} || true" -l application -su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application \ No newline at end of file +su -c "/app/bin/console kimai:install || true" -l application +su -c "/app/bin/console kimai:create-user ${APP_ADMIN_USER} ${APP_ADMIN_EMAIL} ROLE_SUPER_ADMIN ${APP_ADMIN_PASS} --env=${APP_ENV} -vvv || true" -l application