The image is based on phusion/baseimage and uses runit to manage services (apache, mysql, etc).
Run new iTop (see tags for specific iTop versions) container named my-itop:
sudo docker run -d -p 8000:80 --name=my-itop vbkunin/itop
Then go to http://localhost:8000/ to continue the installation.
Use this command to get the MySQL user credentials:
sudo docker logs my-itop | grep -A7 -B1 "Your MySQL user 'admin' has password:"
Or you can specify your own MySQL user password using MYSQL_PASS
environment variable:
sudo docker run -d -p 8000:80 --env MYSQL_PASS='Pa$5w0rD' --name=my-itop vbkunin/itop
If you want to persist iTop configuration and/or MySQL data between the container recreations, mount it as a volume:
sudo docker run -d -p 8080:80 --name=my-itop -v my-itop-conf-volume:/var/www/html/conf -v my-itop-db-volume:/var/lib/mysql vbkunin/itop
But don't forget to fix the rights to the folder (in any case, iTop setup wizard will remind you):
sudo docker exec my-itop chown www-data:www-data /var/www/html/conf
Expose iTop extensions folder if you need it:
sudo docker run -d -p 8000:80 --name=my-itop -v /home/user/itop-extensions:/var/www/html/extensions vbkunin/itop
Уou can get base
image without MySQL database server (only Apache and PHP) to use with your own one:
sudo docker run -d -p 8000:80 --name=my-itop vbkunin/itop:latest-base
External MariaDB container:
name: "itop-and-mariadb"
services:
itop:
image: vbkunin/itop:latest-base
ports:
- "8000:80"
volumes:
- ./itop/conf:/var/www/html/conf
- ./itop/extensions:/var/www/html/extensions
post_start:
- command: chown -R www-data:www-data /var/www/html/conf
user: root
depends_on:
- mariadb
restart: unless-stopped
mariadb: # db server name is 'mariadb'
image: mariadb:lts
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_DATABASE: itop
MYSQL_USER: itop
MYSQL_PASSWORD: itop
MARIADB_RANDOM_ROOT_PASSWORD: 1 # docker compose logs mariadb | grep 'GENERATED ROOT PASSWORD'
restart: unless-stopped
volumes:
db-data:
All-In-One container:
name: "itop-all-in-one"
services:
itop:
image: vbkunin/itop:latest
ports:
- "8000:80"
volumes:
- ./itop/conf:/var/www/html/conf
- ./itop/extensions:/var/www/html/extensions
- db-volume:/var/lib/mysql
environment:
MYSQL_PASS: change_me # or grep the generated password from the log when the container is first started.
post_start:
- command: chown -R www-data:www-data /var/www/html/conf
user: root
restart: unless-stopped
volumes:
db-volume:
The image ships with several useful scripts you can run like this:
sudo docker exec my-itop /script-name.sh [script_params]
If you need the iTop Toolkit you can simply get this:
sudo docker exec my-itop /install-toolkit.sh
A cron setup helper is aboard:
sudo docker exec my-itop /setup-itop-cron.sh Cron Pa$5w0rD
Then you should create iTop user account with login Cron and password Pa$5w0rD and grant him Administrator profile. The third argument (optional) is the absolute path to the log file or --without-logs
key. By default, the log file is /var/www/html/log/cron.log
.
There are other scripts:
- make-itop-config-writable.sh (or you can use
conf-w
shortcut without the leading slash:docker exec my-itop conf-w
) - make-itop-config-read-only.sh (or
conf-ro
shortcut:docker exec my-itop conf-ro
)
If you're using this image for development (especially with PhpStorm), there are a few things for you.
-
install-xdebug.sh – install Xdebug PHP extension and setup it for remote debugging. Two arguments are
xdebug.client_port
andxdebug.idekey
(defaults are9003
andPHPSTORM
, respectively).sudo docker exec my-itop /install-xdebug.sh [client_port] [idekey]
-
start-itop-cron-debug.sh – start remote debugging of iTop background tasks script (cron.php). The first two arguments are iTop user and his password (
admin
andpassword
) and the third argument is debug server configuration name (default islocalhost
) in PhpStorm which specified through PHP_IDE_CONFIG environment variable (more details).sudo docker exec my-itop /start-itop-cron-debug.sh [auth_user] [auth_pwd] [php_ide_server_name]
-
enable-mysql-remote-connections.sh – add the
bind-address = 0.0.0.0
directive to the MySQL configuration to allow connections from outside the container.sudo docker exec my-itop /enable-mysql-remote-connections.sh
Do not forget to expose the MySQL port with
-p 3306:3306
when running the container.
The application and web server logs are redirected to the container’s output streams STDOUT
and STDERR
so they can be viewed using docker logs <container>
. To filter logs by a specific file, you can use tags:
sudo docker logs <container> | grep <tag>
File | Tag | Output stream |
---|---|---|
/var/www/html/log/error.log | itop-error | STDERR |
/var/www/html/log/cron.log | itop-cron | STDOUT |
/var/www/html/log/setup.log | itop-setup | STDOUT |
/var/log/apache2/access.log | apache-access | STDOUT |
/var/log/apache2/error.log | apache-error | STDERR |
You can manage these parameters via the container environment variables LOG_STDOUT
and LOG_STDERR
. Set the variables to empty values to disable log redirection. Default values:
LOG_STDOUT=/var/www/html/log/setup.log:itop-setup,/var/www/html/log/cron.log:itop-cron,/var/log/apache2/access.log:apache-access
LOG_STDERR=/var/www/html/log/error.log:itop-error,/var/log/apache2/error.log:apache-error
Learn more about how Docker Engine works with logs and how to prevent disk-exhaustion by using the local logging driver.
The project uses multi-stage builds and a single Dockerfile to build both base
(only Apache and PHP) and full
images. Therefore, you have to specify the correct --target
and the corresponding --tag
when running the docker build
command.
DOCKER_BUILDKIT=1 docker build \
--target=base \
--tag vbkunin/itop:3.2.2-base \
--build-arg ITOP_DOWNLOAD_URL="https://sourceforge.net/projects/itop/files/itop/3.2.2-1/iTop-3.2.2-1-17851.zip/download" \
-f Dockerfile .
DOCKER_BUILDKIT=1 docker build \
--target=full \
--tag vbkunin/itop:3.2.2 \
--build-arg ITOP_DOWNLOAD_URL="https://sourceforge.net/projects/itop/files/itop/3.2.2-1/iTop-3.2.2-1-17851.zip/download" \
-f Dockerfile .
The only mandatory build argument ITOP_DOWNLOAD_URL
must contain a valid URL to the zip archive with the iTop release.
Multi-platform images for the Docker Hub are created and pushed using the docker buildx
client:
docker buildx build \
--tag vbkunin/itop:"${IMAGE_TAG:?}" \
--platform="linux/arm64,linux/amd64" \
--push \
--target="${BUILD_TARGET:?}" \
--build-arg ITOP_DOWNLOAD_URL="${ITOP_DOWNLOAD_URL:?}" \
-f Dockerfile .