【設定方法】Docker環境で立ち上げたserposcopeのデータをMariaDBへ保存し永続化する

MySQLDockerツールSEO
【設定方法】Docker環境で立ち上げたserposcopeのデータをMariaDBへ保存し永続化する
Memo

Docker環境で立ち上げたserposcopeのデータをMariaDBへ保存し永続化する手順をメモします。

serposcope(サーポスコープ)

serposcopeとは?

serposcope

Google上のウェブサイトの検索順位を監視し、定期的に順位計測をができる
オープンソースで利用できるツールです。

serposcopeの公式サイト

serposcope公式サイト

serposcopeのメリット

  • 完全無料で利用できる
  • 設定できるキーワード数とWebサイトの数は無制限
  • 自動で計測を行ってくれる

メリットはいろいろありますが一番大きいメリットは完全無料であると感じています。
同じSEOの計測ができる他のツールとしてGRCRank Trackerなどがありますがこれらのツールは有料になってしまいます。

環境

  • Mac OS Big SUR 11.3.1
  • Docker 20.10.5, build 55c4c88
  • docker-compose 1.28.5, build c4eb3a1f

ファイル操作で利用するUnixコマンドについて

基本的なディレクトリ作成やファイル操作はUnixコマンドを利用します。
Unixコマンドについて詳しくはこちらの記事を参考にしてください。

docker-composeコマンドについて

docker-composeを操作する際に利用します。
docker-composeコマンドについて詳しくはこちらの記事を参考にしてください。

serposcopeをDocker環境へ立ち上げる

今回は前回serposcopeをインストールしたDocker環境の状態から変更を加えて行きます。
前回の記事については下記になりますので事前にご確認いただければと思います。

serposcopeをDocker環境へ立ち上げる手順

ディレクトリの構成

serposcope
├── docker-compose.yml
└── serposcope
    ├── Dockerfile
    ├── README.md
    ├── entrypoint.sh
    └── serposcope

serposcopeのデータの永続化

Dockerで構築したアプリについて

Dockerは手軽に環境を構築できますが揮発性(コンテナ破棄時に変更分が消えてしまう仕様)のため
再起動などを行うとデータがなくなってしまいます。

serposcopeを継続的に利用

serposcopeを継続的に利用ために再起動後に一度作成したユーザーでログインしたり、集計したデータを確認する場合データを永続化する必要があります。

永続化するためのストレージを準備

前回立ち上げたserposcopeのコンテナはコンテナ内にストレージを保持しているため直接変更することができません。
そのため別でストレージを準備してデータの保存先を別で準備したストレージへむけてあげることで永続差することが可能になります。

MariaDBを立ち上げる

serposcopeはjavaで構築されていてJDBCでDBへアクセスしています。
そのためJDBCで利用できるDBであれば利用可能です。

今回はMySQLと互換のある比較的扱いやすいMariaDBを利用しようと思います。

docker-composeを追記

前回作成したdocker-composeへMariaDBの設定を追記して行きます。

terminal
$ vi docker-compose.yml

下記を追記します。

docker-compose.ymlの内容

docker-compose.yml
serposcope_db: image: mariadb container_name: serposcope_db hostname: serposcope_db command: mysqld --user=mysql ports: - 3306:3306 volumes: - ./mysql-data:/var/lib/mysql environment: MYSQL_HOST: "serposcope_db" MYSQL_DATABASE: "serposcope" MYSQL_USER: "serposcope_user" MYSQL_PASSWORD: "password" restart: always

image

mariadbを指定しています。

environment

DBの設定は環境変数を渡すことで設定できます。

MYSQL_HOST:

任意のデータベースのホスト名を指定します。

MYSQL_DATABASE:

任意のデータベース名を指定します。

MYSQL_USER:

任意のデータベースのユーザー名を指定します。

MYSQL_PASSWORD:

任意のデータベースのパスワードを指定します。
こちらは変更してください。

Volumesのディレクトリの作成

mysql-dataをの作成します。

terminal
$ mkdir mysql-data;

ディレクトリ構成

.
├── docker-compose.yml
├── mysql-data
└── serposcope
    ├── Dockerfile
    ├── README.md
    ├── entrypoint.sh
    └── serposcope

serposcopeのデータ保存の向き先の変更

serposcopeがデータを保存するための向き先を先ほど設定を作成したMariaDBへむけます。

terminal
$ vi docker-compose.yml

下記を追記します。

docker-compose.ymlの内容

  serposcope:
    build: serposcope
    container_name: serposcope
    ports:
      - '7134:7134'
    environment:
      SERPOSCOPE_DB_URL: 'jdbc:mysql://serposcope_db/serposcope?user=serposcope_user\&password=password\&allowMultiQueries=true'
    depends_on:
      - serposcope_db
    restart: always

environment

データ保存先の設定は環境変数を渡すことで設定できます。

SERPOSCOPE_DB_URL:

先ほど設定したMariaDBのDB設定に合わせて記述します。

フォーマット

jdbc:mysql://{{データベースのホスト名}}/{{データベース名}}?user={{データベースのユーザー名}}\&password={{データベースのパスワード}}\&allowMultiQueries=true

depends_on

起動の順番を指定する項目です。
データベースの後に起動させるために設定します。

Docker-compose 全体

version: '3'
services:
  serposcope_web:
    build: serposcope
    container_name: serposcope_web
    ports:
      - '7134:7134'
    depends_on:
      - serposcope_db
    environment:
      SERPOSCOPE_DB_URL: 'jdbc:mysql://serposcope_db/serposcope?user=serposcope_user\&password=password\&allowMultiQueries=true'
      SERPOSCOPE_DB_DEBUG: "true"
    restart: always

  serposcope_db:
    image: MariaDB
    container_name: serposcope_db
    hostname: serposcope_db
    command: mysqld --user=mysql
    ports:
      - 3306:3306
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      MYSQL_HOST: "serposcope"
      MYSQL_DATABASE: "serposcope_db"
      MYSQL_USER: "serposcope_user"
      MYSQL_PASSWORD: "password"
    restart: always

ディレクトリ構成

.
├── docker-compose.yml
├── mysql-data
└── serposcope
    ├── Dockerfile
    ├── README.md
    ├── entrypoint.sh
    └── serposcope

コンテナを再起動

コンテナを再起動して設定を反映させます。

docker-compose downでコンテナを停止

docker-compose downコマンドでコンテナを停止します。

terminal
$ docker-compose down

docker-compose upでコンテナを起動

docker-compose upコマンドでコンテナを起動します。

terminal
$ docker-compose up

serposcopeへアクセス

起動したアプリケーションへアクセスします。

アクセスするURL

ローカルホストでDockerを起動している場合は
http://localhost::7134こちらからアクセスできます。

serposcopeログイン画面

ログイン画面が確認できます。

serposcopeログイン画面

以上でデータの永続化は完了になります。