【GitLab 公式 を訳してみた】MySQLを使う

法律: IT 解説記事 GitLab CI コンテナ セキュリティ フノス(訳者) マニュアル

GitLab Documentation>GitLab Continuous Integration (GitLab CI)>CIサービス設定例>MySQL を使う 

  たくさんのアプリケーションが、データベースにMySQLを採用しています。もちろん、アプリケーションのテストを行う際にはデータベースも一緒にテストできる状態にしておかなくてはなりません。
 これから、MySQLをDockerで運用する方法と、GitLab Runnerのシェルエクゼキュータで運用する方法との、2種類をお教えします。

 

  DockerエクゼキュータからMySQLを使う

  もしもGitLab RunnerでDockerエクゼキュータを使っている場合は、基本的にこの設定は終了していることになっています。

  まず、「.gitlab-ci.yml」ファイルに次の設定を加えます。

======================
services:
 -mysql:latest
variables:
 # ここではmysqlを使っていく上で必要な環境変数を設定する。(https://hub.docker.com/r/_/mysql/)
 MYSQL_DATABASE: el_duderino
 MYSQL_ROOT_PASSWORD: mysql_strong_password
======================

  次に、アプリケーションのデータベースとして必要な設定をします。先ほどの設定した環境変数が登場します。
 以下は例示です。

======================
Host: mysql
User: root
Password: mysql_strong_password
Database: el_duderino
======================

  なぜここで「Host: mysql」としたのかについては、こちらの『Dockerイメージを使う』というページの『サービスをjobと連携させる方法』という節が参考になるかと思われます。

  ホストにするDockerイメージは、Docker Hubに公開されているものなら全て使用可能です。
 たとえば、Docker Hub上で公開されている「MySQL 5.5」というサービスなら、「mysql:5.5」として設定コンフィグに記載します。

  今回使用しているmysqlイメージでは、環境変数がいくつか用意されています。
 このような説明は、Docker Hub側の説明書に掲載されていることがほとんどですので、ぜひ入念にご確認ください。


 

  シェル・エクゼキュータからMySQLを使う

  これはあくまで手動で、GitLab Runnerに設定することとなりますが、MySQLをシェルエクゼキュータから利用する方法があります。

  まずは、MySQLサーバーをインストールします。

======================
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
======================

  MySQLのルートパスワードを設定します(必須)。これは尋ねられる度に、2回打ち込まなくてはいけません。

 注:セキュリティの観点から、「mysql_secure_installation」が何者かによって削除された際には、データベースのテスト並びに、rootユーザーによるリモートログインが不可能になります。
 

  次に、 MySQLにログインできるユーザーを作成します。このユーザーがMySQLに対するroot権を保持していることになります。

======================
mysql -u root -p
======================

  その後に、アプリケーションを管理するランナーのユーザーを作成したら、
 以下のコマンドでなるべく強固なパスワード($passwordに相当)を設定します。

  注:mysql>」と先頭に書いてありますが、これはMySQLプロンプトに出現する目印ですので、ご自分ではタイプしないでください。

======================
mysql> CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';
======================

  データベースを作成するコマンド:

======================
mysql> CREATE DATABASE IF NOT EXISTS `el_duderino` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
======================

  データベースを運用する上で、使用に権利認証が必要なコマンド:

============================================
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `el_duderino`.* TO 'runner'@'localhost';
============================================

  用事が済んで、データベースのセッションを終了させるときのコマンド:

======================
mysql> \q
======================
 (¥はバックスラッシュの誤変換)

  最低限、データベースがまだ作り立てのときには、接続が確実に行われているかどうかをご確認ください。

======================
mysql -u runner -p -D el_duderino
======================

  最後に、データベースとして使うために、アプリケーション側の設定を行います。

======================
Host: localhost
User: runner
Password: $password
Database: el_duderino
======================

 

  例示プロジェクト

  もし、オープンソースプロジェクトの作成をお考えで、GitLab.comで作業する予定がある方は、こちらの Example MySQL Projectをお使いいただけます。ここで使用するランナーは共有ランナーです。

  この例示プロジェクトに対して何か思うところはありませんか?
 「これじゃ物足りない…」、「もうちょっとこの機能が欲しい」とか。

 それだったら、ぜひともこのプロジェクトをフォークして、変更をかけてコミット&プッシュしていただけると嬉しいです。変更は、しばらくすると共有ランナーに検知され、jobが開始されます。

  Edit this page

 

 

 2018-03-23 21:37:03 / Hnoss
原文サイトを表示
[ 原文 ] https://docs.gitlab.com/ee/ci/services/mysql.html
原文ページプロジェクト並びにドキュメントファイルは、MIT Licenseのもと公開されています。(URL:https://gitlab.com/gitlab-com/gitlab-docs/blob/master/LICENSE) この記事の文章は、訳者の判断によりCreative Commons BY (version 3.0) を適用するものとします。