UbuntuでDockerを使ってサクッとDBサーバーを立ち上げる
仕事で、バッチサーバー用のDBを立ち上げることがあったので、毎回同じ作業をするのに調べるのが面倒なのでメモとして残しました。
公開日: 2018.12.20
環境
- サーバー: Google Compute Engine n1-standard-1(vCPU x 1、メモリ 3.75 GB)
- OS: Ubuntu 18.04
- DB: MySQL 5.6
無料クレジットがあったので、Google Cloud Platform(GCP)のCompute Engine(GCE)を使いました。AWSやVPSとかでも、基本的には一緒ですが、ネットワーク設定だけは各サービスで異なるので、ご了承ください。
Docker&docker-composeをインストール
Dockerで構築しておけば、OS環境を汚さないので、まずは、Docker関連をインストールします。
Dockerをインストール
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt update
sudo apt install -y docker-ce
docker-composeをインストール
export compose='1.23.2'
sudo curl -L https://github.com/docker/compose/releases/download/${compose}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod 0755 /usr/local/bin/docker-compose
MYSQLコンテナをdocker-composeで立ち上げる
Dockerが入ったので、インストールします。
ファイルを用意して、docker-compose up -dするだけです。
ディレクトリ構成
├── db
├── docker-compose.yml
└── my.cnf
共有ネットワークを作る
sudo docker network create common_link
docker-compose.yml
パスワード周りは適宜変更してください
version: "2"
services:
db:
image: mysql:5.6
ports:
- "33306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_DATABASE: test
TZ: Asia/Tokyo
networks:
- common_link
restart: always
volumes:
- ./db:/var/lib/mysql
- ./my.cnf:/etc/mysql/my.cnf
networks:
common_link:
external: true
my.cnf
[mysqld]
explicit_defaults_for_timestamp = 1
立ち上げる
sudo docekr-compose up -d
33306ポートを開ける(GCPの場合)
今回は、Google Compute Engineで立ち上げているので、このままではポートが開いていなくてどこからもアクセスができません。
GCPではファイアウォールの設定が管理画面から簡単にできるので、設定していきます。
VPSネットワークでファイアウォールの設定
GCPのコンソール画面をブラウザで開いて、VPSネットワーク->ファイアウォールルールで、「ファイアウォールルールを作成」からルールを作成します。
大事なのは、
– ターゲット (ターゲットタグ)
– ソースフィルタ (IP 範囲)
です。それ以外は任意&デフォルトでOKです。
上の画像の例では、インスタンスに「mysql」というタグが付いている場合に、0.0.0.0/0(つまり全IP)からの許可を与えています。接続元のIPが確定している場合は、IPを指定したほうがいいでしょう。
インスタンスにネットワークタグを追加
設定ができたら、Compute Engineの管理画面に移動して、対象のインスタンスの設定を編集して、「ネットワークタグ」に「mysql」を追加します。
追加ができたら保存すればOKです。これで、外部からアクセスができるようになりました。
docker-copmoseファイルが用意されていれば、インスタンスの作成から使えるようになるまで10分ほどかと思います。
クラウドサーバーとDockerを使うと、サーバー構築が楽でいいですね。