Docker を使用して、CentOS 7にdrawio コンテナを起動する

ネットワーク構成図やフローチャートなどを作成する際に、draw.io をよく使用しております。

ふとしたきっかけで、draw.io のコンテナイメージが提供されていることにちょっとした感動を覚えたので、draw.io のコンテナを起動する手順や諸設定、ファイルの保存手順など個人的な備忘録として、ここに記そうと思います。


## 前提条件
- Docker はインストール済みであるとする
- Webブラウザはインストール済みであるとする
- 今回は、proxy 環境下ではないものとする

## 構成図のイメージ

![draw_io_構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/47e4d88c-3219-1cce-c87c-4004721e93ec.png)

## 実行環境

```
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

# docker --version
Docker version 19.03.5, build 633a0ea
```

## draw.io の環境構築

#### 1. draw.io イメージの取得する

```
# docker pull fjudith/draw.io
```

```log
Using default tag: latest
latest: Pulling from fjudith/draw.io
743f2d6c1f65: Pull complete
5c14188d0980: Pull complete
84a54a21b0f2: Pull complete
d9d1bc98b287: Pull complete
c99e982badff: Pull complete
50c6b4dfde57: Pull complete
baf34d1e501e: Pull complete
094583998b04: Pull complete
1f3294a8faa5: Pull complete
6cd861d23081: Pull complete
e4e8872284bc: Pull complete
fa964444091e: Pull complete
5deea4b555e2: Pull complete
e5f8fe1bc370: Pull complete
52a35fda92ac: Pull complete
Digest: sha256:7113dcfa0cb81c7334d5b9f03c03fd642186f71d522114e96b3bd8f420081938
Status: Downloaded newer image for fjudith/draw.io:latest
docker.io/fjudith/draw.io:latest
```

#### 2. draw.io のコンテナを起動する

```
# docker run -d -it --name="draw_io" \
  -p <ホストOSの空きport>:8080 -p <ホストOSの空きport>:8443 \
  fjudith/draw.io
```

- 18080, 18443 が未使用でしたので、下記のようなコマンドイメージで起動する。

```
# docker run -d -it --name="draw_io" -p 18080:8080 -p 18443:8443 fjudith/draw.io
```

#### 3. draw.io コンテナの起動確認

```
# docker ps -a | grep draw
```

```log
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                                              NAMES
f1be57a499f1        fjudith/draw.io     "/docker-entrypoint.…"   About a minute ago   Up About a minute        0.0.0.0:18080->8080/tcp, 0.0.0.0:18443->8443/tcp   draw_io
```

## draw.io の日本語設定

#### 1. Web ブラウザを起動して、http://localhost:18080/ にアクセスする

- ※コンテナ起動時に指定した 8080 にポートフォワードしている**ホストOSのport**を指定すること。

#### 2. Language をクリックする

![draw_io_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/4f30fdc4-97e4-687e-55ae-c8b1eb9d6a01.png)

#### 3. 日本語を選択する

![draw_io_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/32bdacce-a645-e99f-962d-7bbd10c49b05.png)

#### 4. 下記のウィンドウで、【OK】をクリックする

![draw_io_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/271be6c4-4152-5522-d223-1563988a4456.png)


## draw.io でファイルを新規作成する

#### 1. ファイルの保存先に【Device】を指定する

![draw_io_004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/084dd441-b193-028e-c233-c905502a2b12.png)


#### 2. 【新規ファイルを作成する】 を選択する

![draw_io_005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/cc17c937-d4de-8ca6-45d1-01b262111a9d.png)

#### 3. 【作成する】をクリックする

デフォルトだと【白紙ファイル】が選択される。

![draw_io_006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/05fdbf5b-7b7d-86aa-cd26-c1eaf9d2df73.png)


## アイコンを検索する

赤枠のところに使用したいアイコンを入力すると、検索結果にヒットしたアイコンが表示される。

![draw_io_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/b7b174e0-9783-a023-215f-660bc58c2030.png)

Redis / MySQL / Docker / Git で検索した結果を下記に記載する

![draw_io_Redis_MySQL_docker_git.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/6e69f8d7-087b-1911-65e5-acc4ca0dc1f9.png)


## アイコンを追加する

初期で登録されているアイコンが少ないので、下記の手順でアイコンを追加する。

#### 1. 画面左下の【+ その他の図形...】をクリックする

![draw_io_add_shapes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/653bf72f-9e0d-1880-1a4f-19ee1d5de0ba.png)

#### 2. 下記のように追加したいアイコンにチェックを入れて、【適用】をクリックする

![draw_io_add_shapes_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/9e89f301-2142-b2c0-e773-468f8c76becf.png)

AWS のアイコンが追加されたので、EC2 / VPC / RDS で検索した結果を下記に記載する

![draw_io_EC2_VPC_RDS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/6374ae35-f102-9426-6850-9f14a4d2e0e4.png)


## 作成したファイルを保存する

#### 1. 下記のようなネットワーク構成図を作成する

![draw_io_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/099b431a-135a-6812-0d71-f66abf8a0830.png)

#### 2. 【Ctrl】+【Shift】+【S】を押下して、ファイルを保存する

#### 3. ファイル名に任意の名前をつけて、【デバイス】をクリックする

![draw_io_009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/b536ffee-1d7f-27b3-1ea2-d508081bedb6.png)


## ファイル形式を指定して、保存する

作成したファイルを画像ファイルで出力したいので、下記操作で画像を保存する

#### 1. 【File】->【形式を指定してエクスポート】->【PNG】の順にクリックする

![draw_io_010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/af625b50-1504-1eb9-9364-432a46beea1a.png)

#### 2. 【エクスポート】をクリックする

![draw_io_011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/e8f90597-5fb5-220a-39fc-80419d61b563.png)

#### 3. ファイル名に任意の名前をつけて、【デバイス】をクリックする

![draw_io_012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274407/2d7c6ef6-d8b9-5a06-3893-882c3e04e367.png)


## 参考URL

- [fjudith/draw.io](https://hub.docker.com/r/fjudith/draw.io)