iTop — ITSM и CMDB в духе ITIL: инциденты, запросы, изменения, проблемы, известные ошибки, конфигурационные единицы. Ниже — свой образ Apache + PHP 8.3, MariaDB и доступ по HTTPS через Traefik.
Нужны рабочий Traefik и сеть traefik_network (в compose ниже — как traefik_default, если у вас так называется сеть Traefik, подставьте своё имя).
.envКод iTop кладётся в ./web (клон/распаковка дистрибутива). Данные — в ./data.
mkdir -p itop/data/{conf,extensions,mysql}
cd itop
# web/ — исходники iTop
cat > .env <<'EOF'
DOMAIN=(yourdomain)
ITOP_DB_PWD=(youpassword)
EOF
Хост сервиса: itop.(yourdomain) → в labels Host(\itop.${DOMAIN}`)`.
Минимальный Dockerfile (Apache + PHP 8.3 и расширения iTop: mysqli, gd, soap, zip, ldap, apcu; graphviz для схем):
FROM php:8.3-apache
COPY --from=mlocati/php-extension-installer:latest /usr/bin/install-php-extensions /usr/local/bin/
RUN apt-get update \
&& apt-get install -y --no-install-recommends graphviz unzip mariadb-client \
&& install-php-extensions apcu gd ldap mysqli soap zip \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN a2enmod rewrite headers \
&& mkdir -p /var/lib/php/sessions \
&& chown www-data:www-data /var/lib/php/sessions \
&& echo "session.save_path = /var/lib/php/sessions" > /usr/local/etc/php/conf.d/session.ini
WORKDIR /var/www/html
EXPOSE 80
CMD ["apache2-foreground"]
Код монтируется томом — образ без вшитого iTop, удобно обновлять web/.
docker-compose.ymlservices:
itop:
build: .
container_name: itop-web
image: itop:local
restart: unless-stopped
volumes:
- ./web:/var/www/html
- ./data/conf:/var/www/html/conf
- ./data/extensions:/var/www/html/extensions
depends_on:
mariadb:
condition: service_healthy
# ports: # только для локального запуска без Traefik
# - "8000:80"
labels:
- traefik.enable=true
- traefik.http.middlewares.itop_https.redirectscheme.scheme=https
- traefik.http.routers.itop.entrypoints=web
- traefik.http.routers.itop.middlewares=itop_https@docker
- traefik.http.routers.itop.rule=Host(`itop.(yourdomain)`)
- traefik.http.routers.itop_https.entrypoints=websecure
- traefik.http.routers.itop_https.rule=Host(`itop.(yourdomain)`)
- traefik.http.routers.itop_https.tls=true
- traefik.http.routers.itop_https.tls.certresolver=le
- traefik.http.services.itop.loadbalancer.server.port=80
networks:
- traefik_network
- internal
mariadb:
image: mariadb:lts
container_name: itop-mariadb
restart: unless-stopped
volumes:
- ./data/mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: itop
MYSQL_USER: itop
MYSQL_PASSWORD: ${ITOP_DB_PWD:-itop}
MARIADB_RANDOM_ROOT_PASSWORD: "1"
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
networks:
- internal
networks:
traefik_network:
external: true
internal:
driver: bridge
⚠️ Замените
(yourdomain)/ пароль БД. Если labels берут${DOMAIN}из.env, запускайте compose из каталога с этим файлом:docker compose --env-file .env up -d.
docker compose build
docker compose up -d
Откройте https://itop.(yourdomain)/setup и пройдите мастер:
mariadb (имя сервиса);itop;.env.После установки вход: https://itop.(yourdomain). Чтобы убрать предупреждение о правах на конфиг:
docker compose exec itop chmod 440 /var/www/html/conf/production/config-itop.php
./data/mysql, ./data/conf и при необходимости ./data/extensions.ports: "8000:80", уберите labels/сеть Traefik.Итог: iTop на своём PHP-образе + MariaDB за HTTPS, готовый к заявкам и CMDB на домашнем или офисном стенде.