bheisig / i-doit-docker

Dockerized i-doit CMDB
GNU Affero General Public License v3.0
25 stars 13 forks source link
asset-management cmdb configuration-items configuration-management docker docker-images dockerfiles docs documentation documentation-of-things i-doit idoit it-asset- it-assets it-documentation itam

i-doit Docker images

Dockerized i-doit CMDB

Stars Pulls Image size Build status

Not production-ready!

The provided Docker images aren't production-ready. Please do not rely on them. They come "as is" with no warranty of any kind. They are not an official product by synetics GmbH. Because of this, we can't provide you any support.

At the moment, we use these images for quality tests of i-doit and its add-ons. In the near-future we hope to provide you official i-doit Docker images which are well-tested and production-ready. In the meantime don't hesitate to test these images yourself. We love to get your feedback!

Supported tags and respective Dockerfile links

Note: Older branches are not supported anymore but can still be found in the repository.

Quick reference

What is i-doit?

i-doit ("I document IT") is a fully-featured Web application for CMDB (Configuration Management Databases), IT asset management (ITAM) and IT documentation. i-doit is maintained by the company synetics GmbH, located in Düsseldorf/Germany.

How to use this image

Each image is built on the official PHP Docker image. We've got heavily inspired by the well-documented Nextcloud docker image. Thank you!

Run i-doit with PHP-FPM (recommended)

Run the latest version of i-doit open with PHP 8.0 and FPM:

docker run --name i-doit-fpm -p 9000:9000 bheisig/idoit:1.19-open-php8.0-fpm

Run i-doit with Apache HTTPD (legacy)

Run the latest version of i-doit open with PHP 8.0 and Apache HTTPD 2.4:

docker run --name i-doit-apache -p 80:80 bheisig/idoit:1.19-open-php8.0-apache

Available volumes

Each i-doit container has one default volume containing the complete installation directory: /var/www/html. This directory includes the source code, cache files, uploaded files, installed add-ons, custom translation files, etc.

Run i-doit with Docker Compose

i-doit requires either MariaDB or MySQL as the database backend. For better performance Memcached is highly recommended. There are some examples:

Run i-doit CLI tool

i-doit has its own CLI tool named console.php for long-lasting, recurring tasks in background. You can call any CLI command in the running Docker container, for example:

docker exec -it --user www-data i-doit-fpm php console.php --help

Update i-doit

to be defined

Backup and restore

For a complete backup and restore process you need to consider at least 3 sources:

  1. i-doit installation directory (see section "Available volumes")
  2. System database (default: idoit_system)
  3. Each tenant database (default 1st one: idoit_data)

As you can see in the examples for docker-compose (see section "Run i-doit with Docker Compose") the simplest thing is to backup the named volumes. But for a running instance of MariaDB this is a bad solution because everything stored temporarily in memory won't be backed up. Run mysqldump (for backup) and mysql (for restore) to fetch every bit stored in the databases.

This is a basic example to backup everything in a running environment:

docker exec i-doit-fpm /bin/tar cvf - . | gzip -9 > backup.tar.gz
docker exec i-doit-fpm /usr/bin/mysqldump -uidoit -pidoit --all-databases | gzip -9 > backup.sql.gz

This is a basic example to restore those backups:

cat backup.tar.gz | docker exec --interactive --user www-data i-doit-fpm /bin/tar xzvf -
gunzip < backup.sql.gz | docker exec --interactive i-doit-fpm /usr/bin/mysql -uidoit -pidoit

Don't forget to alter the commands above to your needs.

Add a subscription license

Copy the file to the running i-doit container and import the file with the i-doit CLI tool:

docker cp license.txt i-doit-fpm:/tmp/
docker exec --interactive --user www-data i-doit-fpm php \
    console.php license-add \
    --user admin --password admin --no-interaction --license /tmp/license.txt

Move your CMDB data to a container

The next example assumes that i-doit is installed on the same host as the running i-doit container:

cd /var/www/html/
tar czvf - . | docker exec --interactive --user www-data i-doit-fpm /bin/tar xzvf -
mysqldump -uidoit -pidoit --all-databases | \
    docker exec --interactive i-doit-fpm /usr/bin/mysql -uidoit -pidoit

TLS/HTTPS

We strongly recommend to access i-doit in a productive environment via TLS/HTTPS. Consider to use a load balancer or reverse proxy because the provided images are unable to handle TLS/HTTPS connections themselves.

Image variants

<version>-<edition>-<php>-<service>

Copyright & license

Copyright (C) 2019-2022 synetics GmbH

Licensed under the GNU Affero GPL version 3 or later (AGPLv3+)