Dockerを使ってzabbixの開発環境を構築してみた

## 概要

- Dockerを用いてzabbixの開発環境を準備に苦戦したので構築方法を記載します。

## TL;DR

- githubからzabbix-dockerをクローンする
- docker-composeファイルから``profile``をコメントアウトする
- 下記のdocker-composeコマンドを使用して操作を行う
  - 起動
    - ``docker-compose -f docker-compose_<file name>.yaml up -d --build``
  - 確認
    - ``docker ps``
  - 停止
    - ``docker-compose -f docker-compose_<file name>.yaml down``

## 前提

- docker-composeを実行できる環境があること

---

## 流れ

### 1. Gitから[zabbix-docker][1]をインストールする

1. 緑色の``code``ボタンを押下しURLをコピー
2. cloneしたいディレクトリを開く
3. ``git clone https://github.com/zabbix/zabbix-docker.git``を行いクローンする

### 2. クローンしたdocker-composeファイルを実行する

> ※docker-composeファイルが大量にクローンされているので自分で使用したいものを選んでください。

1. クローンしたリポジトリへ移動
    ``$cd zabbix-docker ``
2. docker-composeを実行
    ``$ docker-compose -f docker-compose_v3_ubuntu_mysql_latest.yaml up -d --build``
3. 起動確認
   ``$ docker ps``
   - 実行結果: 起動している
     ```
     CONTAINER ID   IMAGE                                             COMMAND                  CREATED              STATUS                    PORTS                                                                            NAMES
     73550a16b09d   zabbix/zabbix-web-nginx-mysql:ubuntu-6.2-latest   "docker-entrypoint.sh"   About a minute ago   Up 55 seconds (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   zabbix-docker_zabbix-web-nginx-mysql_1
     59390cbfcb1c   zabbix/zabbix-server-mysql:ubuntu-6.2-latest      "/usr/bin/tini -- /u…"   About a minute ago   Up About a minute         0.0.0.0:10051->10051/tcp, :::10051->10051/tcp                                    zabbix-docker_zabbix-server_1
     9260cf81f375   mysql:8.0-oracle                                  "docker-entrypoint.s…"   About a minute ago   Up About a minute                                                                                          zabbix-docker_mysql-server_1
     ```
4. webで確認上での確認
- 結果：**アクセスできなかった**
-  原因と思われるところ
   - docker-composeに記載されている下記docker imageが起動していないため
      - ``3``の起動時に起動した項目
        ```
        zabbix-web-nginx-mysql
        zabbix-server-mysql
        mysql
        ```
      - 本来起動させたい項目
        ```
        zabbix-server
        zabbix-proxy-sqlite3
        zabbix-proxy-mysql
        zabbix-web-apache-mysql
        zabbix-web-nginx-mysql
        zabbix-agent
        zabbix-java-gateway
        zabbix-snmptraps
        zabbix-web-service
        mysql-server
        db_data_mysq
        ```
   - なぜ起動しなかったのか?
     - docker-compose ファイルに``profiles``の設定がされているのが原因のようです

５. 起動しているdocker-composeをクローズ
   ``$ docker-compose -f docker-compose_v3_ubuntu_mysql_latest.yaml down``

### 3. 修正して再度実行してみる

1. docker-composeファイルに記載されている内容の修正

- 以下の項目をコメントアウト
     ```yml
     profiles:
       - all

     profiles:
       - full
       - all
     ```

２. docker-composeを実行
    ``$ docker-compose -f docker-compose_v3_ubuntu_mysql_latest.yaml up -d``

３. 起動確認

- 結果：起動してそう

   ```
   CONTAINER ID   IMAGE                                              COMMAND                  CREATED              STATUS                    PORTS                                                                                  NAMES
   5674102bd9e3   zabbix/zabbix-web-apache-mysql:ubuntu-6.2-latest   "docker-entrypoint.s…"   56 seconds ago       Up 36 seconds (healthy)   0.0.0.0:8443->8443/tcp, :::8443->8443/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   zabbix-docker_zabbix-web-apache-mysql_1
   8491c0e099ac   zabbix/zabbix-web-nginx-mysql:ubuntu-6.2-latest    "docker-entrypoint.sh"   56 seconds ago       Up 37 seconds (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp         zabbix-docker_zabbix-web-nginx-mysql_1
   b86ac8481241   zabbix/zabbix-server-mysql:ubuntu-6.2-latest       "/usr/bin/tini -- /u…"   About a minute ago   Up 56 seconds             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp                                          zabbix-docker_zabbix-server_1
   43e8a7cbdc6a   zabbix/zabbix-proxy-mysql:ubuntu-6.2-latest        "/usr/bin/tini -- /u…"   About a minute ago   Up 57 seconds             0.0.0.0:10071->10051/tcp, :::10071->10051/tcp                                          zabbix-docker_zabbix-proxy-mysql_1
   45abab99c73a   zabbix/zabbix-proxy-sqlite3:ubuntu-latest          "/usr/bin/tini -- /u…"   About a minute ago   Up 58 seconds             0.0.0.0:10061->10051/tcp, :::10061->10051/tcp                                          zabbix-docker_zabbix-proxy-sqlite3_1
   9959f5e10fe3   zabbix/zabbix-agent:ubuntu-6.2-latest              "/usr/bin/tini -- /u…"   About a minute ago   Up About a minute                                                                                                zabbix-docker_zabbix-agent_1
   12d4a2bcc7a1   mysql:8.0-oracle                                   "docker-entrypoint.s…"   About a minute ago   Up About a minute                                                                                                zabbix-docker_mysql-server_1
   cc29e940b8f4   zabbix/zabbix-snmptraps:ubuntu-6.2-latest          "/usr/sbin/snmptrapd…"   About a minute ago   Up About a minute         0.0.0.0:162->1162/udp, :::162->1162/udp                                                zabbix-docker_zabbix-snmptraps_1
   f99c6e4f81e5   zabbix/zabbix-web-service:ubuntu-6.2-latest        "docker-entrypoint.s…"   About a minute ago   Up About a minute                                                                                                zabbix-docker_zabbix-web-service_1
   d94e1b55c9ab   zabbix/zabbix-java-gateway:ubuntu-6.2-latest       "docker-entrypoint.s…"   About a minute ago   Up About a minute                                                                                                zabbix-docker_zabbix-java-gateway_1
   ```

４. webで確認

- http://localhost:8081/
- 結果: **起動できた**

![zabbix_login_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2841151/5dcc6397-46c5-d722-6fbf-27a03ec98179.png)

![zxsbbic_desktop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2841151/230465de-716f-6be0-fd8b-5e1c5c222853.png)



## 詰まったところ

- dockerのprofilesの理解ができていなかった
  - 使用方法はいろいろあると思いますが、通常起動しないサービスに``profiles``を付けてようです。
    - 参考: [docker-compose up で一部のサービスを除外する方法][2]



## 参考

- github
  - https://github.com/zabbix/zabbix-docker/tree/6.2
- docker profiles
  - https://gotohayato.com/content/505/

[1]: https://github.com/zabbix/zabbix-docker/tree/6.2
[2]: https://gotohayato.com/content/505/