# Piwik with Docker

С недавних пор стал использовать для сбора статистики посещаемости сайта бесплатный Piwik. Для размещения использовал бесплатный сервис OpenShift. Но OpenShift в своем бесплатном варианте не гарантирует бесперебойной работы сервиса и указывает на то, что возможны простои в работе серверов.

Решил попробовать установить Piwik на свой сервер. Просмотрел документацию, требования, понял, что настройка сервера займет довольно много времени. И если в дальнейшем потребуется перенос данных, опять потребуется масса времени на повторение всех настроек. В качестве решения возникшей проблемы решил использовать Docker, так как он уже показал свою состоятельность, в момент организации своего VPN-сервера. Но поиск в интернете давал различные варианты, ни один из которых у меня нормально так и не заработал. Пришлось писать самому.

Исходный код полученных конфигурационных файлов можно найти в репозитории [Juev/docker-piwik](https://github.com/Juev/docker-piwik "Juev/docker-piwik").

Репозиторий содержит в себе как файлы необходимые для генерации образа, так и файл, необходимый для запуска сервиса. Образ успешно опубликован в репозитории docker и теперь его можно использовать уже в готовом виде.

Рассмотрим вариант установки piwik на сервер. С момента знакомства с Docker я стал активно использовать операционную систему [Core OS](https://coreos.com "Core OS"), которая ориентирована на безопасное и простое управление рабочими контейнерами. А [DigitalOcean](https://www.digitalocean.com/?refcode=c5cb9e6574a7) предоставляет возможность ее использования.

Итак создает новый Droplet, в качестве операционной системы выбираем Core OS (beta), я предпочитаю использовать стабильные версии, но в данном случае нам потребуется использовать docker-compose, утилита, для работы которой требуется docker входящий только в beta-версию Core OS.

После создания, заходим на сервер по ssh, под именем core и используем следующие команды для установки требуемой утилиты:

```shell
$ sudo mkdir -p /opt/bin
$ curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > docker-compose
$ chmod +x docker-compose
$ sudo mv docker-compose /opt/bin/
```

Core OS поставляется с файловой системой в ReadOnly режиме и не имеет своего пакетного менеджера, все необходимые сервисы и рабочее окружение создается через Docker, обновление проводиться путем замены образа файловой системы и быстрой перезагрузки с переключением в новый образ. Это и безопасно и удобно.

Теперь запускаем собственно piwik:

```shell
$ mkdir Projects && cd Projects
$ git clone https://github.com/Juev/docker-piwik.git
$ cd docker-piwik
$ docker-compose up -d
```

Просто, не правда ли? Да, да, на это все. Сервер готов к использованию, больше ничего не нужно делать. Осталось только настроить сам piwik к использованию. Для этого просто переходим по адресу вашего сервера и проходим стандартную конфигурацию через мастер. Единственное, на что стоит обратить внимание, при настройке соединения с базой данных необходимо использовать следующие значения:

```yaml
Database Server: mysql
Login: piwik
Password: vdZggFUwSZcKcq9fFczH7AsjAfgF59r
Database name: piwik
```

Если вас смущает то, что логины и пароль уже заданы, можете в любой момент их сменить, изменив файл `docker-compose.yml`. Главное, что при настройке piwik вам нужно использовать значения из данного файла. Обратиться к mysql извне невозможно, доступ к контейнеру с базой данных есть только у контейнера с piwik и оба контейнера размещаются за NAT.

Если у вас есть замечания или предложения по данному сервису, не стесняйтесь создавать [Issue](https://github.com/Juev/docker-piwik/issues "Issue") или [Pull Request](https://github.com/Juev/docker-piwik/pulls "Pull Request") в репозитории на GitHub.

