【設定方法】Docker環境で立ち上げたserposcopeのデータをMariaDBへ保存し永続化する
Docker環境で立ち上げたserposcopeのデータをMariaDBへ保存し永続化する手順をメモします。
serposcope(サーポスコープ)
serposcopeとは?
Google上のウェブサイトの検索順位を監視し、定期的に順位計測をができる
オープンソースで利用できるツールです。
serposcopeの公式サイト
serposcopeのメリット
- 完全無料で利用できる
- 設定できるキーワード数とWebサイトの数は無制限
- 自動で計測を行ってくれる
メリットはいろいろありますが一番大きいメリットは完全無料
であると感じています。
同じSEOの計測ができる他のツールとしてGRCやRank 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環境へ立ち上げる手順
ディレクトリの構成
markdownserposcope
├── 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.ymlserposcope_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;
ディレクトリ構成
kotlin.
├── docker-compose.yml
├── mysql-data
└── serposcope
├── Dockerfile
├── README.md
├── entrypoint.sh
└── serposcope
serposcopeのデータ保存の向き先の変更
serposcope
がデータを保存するための向き先を先ほど設定を作成したMariaDBへむけます。
terminal$ vi docker-compose.yml
下記を追記します。
docker-compose.ymlの内容
yaml 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設定に合わせて記述します。
フォーマット
inijdbc:mysql://{{データベースのホスト名}}/{{データベース名}}?user={{データベースのユーザー名}}\&password={{データベースのパスワード}}\&allowMultiQueries=true
depends_on
起動の順番を指定する項目です。
データベースの後に起動させるために設定します。
Docker-compose 全体
yamlversion: '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
ディレクトリ構成
kotlin.
├── 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ログイン画面
ログイン画面が確認できます。
以上でデータの永続化は完了になります。
記事Article
もっと見る- article
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処