@tobybatch is managing the Kimai 2 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 should be raised here.
The Dockerfile that comes with Kimai 2 is suitable mainly for development. It runs a self contained version of Kimai 2 using a SQLite database in the docker container. Be careful, the recorded data can easily be lost when running docker updates or other tasks.
docker build -t kimai/kimai2:dev .
docker run -ti -p 8001:8001 --name kimai2 --rm kimai/kimai2:dev
You can then access the site on http://127.0.0.1:8001. If that doesn’t work check the IP of your docker:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kimai2
When using docker-machine on your Mac, you need to use the IP of your machine.
Considering you started the machine named default
, you find the IP with:
docker-machine ip default
You can run any command in the container in this fashion once it is started. Add -ti
to attach a terminal.
docker exec -ti kimai2 bash
This creates a user admin/admin with all privileges.
docker exec kimai2 /opt/kimai/bin/console kimai:create-user admin admin@example.com ROLE_SUPER_ADMIN password
To install the test data (fixtures):
docker exec kimai2 /opt/kimai/bin/console kimai:reset-dev
You can mount a custom configuration into the container while starting it:
docker run --rm -ti -p 8001:8001 --name kimai2 -v $(pwd)/config/packages/local.yaml:/opt/kimai/config/packages/local.yaml kimai/kimai2:dev
It is possible to mount your source tree and sqlite DB into the container at run time.
N.B. The sqlite database needs to writable by the www-data user.
Use chown 33:33 kimai.sqlite
on the host machine.
docker run --rm -d -p 8001:8001 \
-v $(pwd)/src:/opt/kimai/src \
-v $(pwd)/var/data/kimai.sqlite:/opt/kimai/var/data/kimai.sqlite \
--name kimai2 kimai/kimai2:dev
Now edits in your local files will be served by the container and all database changes will persist.
The official docker documentation has more options on running the container.