Docker
Running Kimai inside docker
We offer Kimai Docker images, both for development and a docker-compose setup suitable for running in a production environment.
Any issues with the container rather than the application itself can be raised here.
Docker Hub
The Docker Hub repo, where you find the auto-building prod and dev containers for Kimai is: https://hub.docker.com/r/kimai/kimai2
Quick start
This will run the latest production build and make it accessible at http://localhost:8001.
-
Start a DB
docker run --rm --name kimai-mysql-testing \ -e MYSQL_DATABASE=kimai \ -e MYSQL_USER=kimai \ -e MYSQL_PASSWORD=kimai \ -e MYSQL_ROOT_PASSWORD=kimai \ -p 3399:3306 -d mysql
-
Start Kimai
docker run --rm --name kimai-test \ -ti \ -p 8001:8001 \ -e DATABASE_URL=mysql://kimai:kimai@${HOSTNAME}:3399/kimai?charset=utf8mb4&serverVersion=5.7.40 \ kimai/kimai2:apache
-
Add a user using the terminal
docker exec -ti kimai-test \ /opt/kimai/bin/console kimai:user:create admin admin@example.com ROLE_SUPER_ADMIN
-
Stop the containers
docker stop kimai-mysql-testing kimai-test
-
When you are finished testing Kimai, you can remove the containers (warning: you will lose your data!).
docker rm kimai-mysql-testing kimai-test
If you are happy with Kimai, you can now setup your Docker installation using Docker Compose.
Runtime Arguments
The following settings can set at runtime:
PHP memory limit
The maximum amount of memory a script may consume, https://php.net/memory-limit
memory_limit=512M
Kimai core settings
See the Kimai and Symfony docs for more info on these.
DATABASE_URL=mysql://user:pass@hodt/dbname?charset=utf8mb4&serverVersion=5.7.40
APP_SECRET=change_this_to_something_unique
TRUSTED_PROXIES=nginx,localhost,127.0.0.1
TRUSTED_HOSTS=nginx,localhost,127.0.0.1
MAILER_FROM=kimai@example.com
MAILER_URL=null://localhost
Start up values:
If set, then these values will be used to create a new admin user (if not yet existing).
ADMINPASS=
ADMINMAIL=
Changing UID and GID
It is possible to set the user that FPM or Apache run as. If the user does not exist a new user called www-kimai is created and the server is then run under that user. Note these must be numbers, not names.
USER_ID=1000
GROUP_ID=1000
Alternate DB config
It is possible to pass the DB config in individual values. If the ENV variable DB_TYPE
is set then the following values will be expected:
The DB_TYPE
must be mysql
:
DB_USER
defaults tokimai
DB_PASS
defaults tokimai
DB_HOST
defaults tosqldb
DB_PORT
defaults to3306
DB_BASE
defaults tokimai
The official docker documentation has more options on running the container.
Tips & Tricks
If you’re using Docker for Windows or Docker for Mac, and you’re getting “Connection refused” or other errors, you might need to change ${HOSTNAME}
to host.docker.internal
.
This is because the Kimai Docker container can only communicate within its network boundaries. Alternatively, you can start the container with the flag --network="host"
.
See here for more information.