こんにちは。よっしーです(^^)
今日は、DockerでAmazonLinux2023にmysqlクライアントをインストールして、動作確認する方法についてご紹介します。
背景
mysqlで日付パーティションを調査したさいに、検証環境の構築したときの内容を備忘として残しました。
この記事のソースは下記のリポジトリにあります。
作成ファイル一覧
下記のファイルを作成しました。ファイル内容は下記のセクションに記載しています。
new file: Makefile
new file: compose.yml
new file: aws/Dockerfile
new file: mysql/Dockerfile
Makefile
SHELL = /bin/bash
WOKR_DIR = ./
.DEFAULT_GOAL := help
# コンテナの状態
.PHONY: ps
ps:
cd $(WOKR_DIR) \
&& docker compose ps
# アプリのビルド
.PHONY: build
build:
cd $(WOKR_DIR) \
&& docker compose build
# アプリの起動
.PHONY: up
up:
cd $(WOKR_DIR) \
&& docker compose up -d
# アプリの停止
.PHONY: down
down:
cd $(WOKR_DIR) \
&& docker compose down
# コンテナの削除
.PHONY: clean
clean:
cd $(WOKR_DIR) \
&& docker compose down --rmi all --volumes --remove-orphans
# awsコンテナへのログイン
.PHONY: login_aws
login_aws:
cd $(WOKR_DIR) \
&& docker compose run aws bash
# help
.PHONY: help
help:
@grep -B 2 -E '^[a-zA-Z_-]+:' Makefile \
| grep -v '.PHONY' \
| grep -v -E '^\s*$$' \
| tr '\n' ',' \
| sed 's/--,/\n/g'
| awk -F, '{printf "%-20s %s\n", $$2, $$1}'
compose.yml
version: '3.8'
services:
mysql:
build: ./mysql
container_name: mysql
environment:
MYSQL_DATABASE: sample
MYSQL_ROOT_PASSWORD: P@ssw0rd
networks:
- net
aws:
build: ./aws
container_name: aws
networks:
- net
networks:
net:
aws/Dockerfile
FROM amazonlinux:2023
RUN dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
RUN dnf -y install mysql mysql-community-client
mysql/Dockerfile
FROM mysql:8.1
動作確認
下記のコマンドを実行します。
make build
make up
make login_aws
下記のコマンドでmysqlに接続できることを確認します。
mysql -hmysql -uroot -p
Enter password: P@ssw0rd
次のような出力になっていればOKです。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.1.0 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
show databases; を実行すると、sampleデータベースが存在することが確認できます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sample |
| sys |
+--------------------+
5 rows in set (0.01 sec)
解説
Makefile
このコードは、Makefileと呼ばれるビルドスクリプト用のファイルの一部です。Makefileは通常、ビルド、デプロイ、タスクの自動化などの目的で使用されるスクリプトです。提供されたMakefileには、Dockerを使用してコンテナを操作するためのルールが含まれています。各ルールはmakeコマンドを使用して呼び出すことができ、特定のアクションを実行します。
ここでは各ルールとその目的を説明します:
SHELL = /bin/bash
: この行は、MakefileがBashシェルを使用することを指定します。WORK_DIR = ./
:WORK_DIR
は、作業ディレクトリを指定します。このMakefileでは、指定されたディレクトリ内のDockerコマンドが実行されます。.DEFAULT_GOAL := help
: この行は、Makefileのデフォルトのターゲット(目標)をhelp
に設定します。デフォルトでmake
コマンドを実行したときには、help
ターゲットが実行されます。.PHONY
ルール:.PHONY
は、makeに対して指示する特別な目標です。これらの目標は実際のファイルのタイムスタンプを無視して、常に実行されます。ps
: このターゲットは、docker compose ps
コマンドを実行し、Dockerコンテナの状態を表示します。docker compose
コマンドは、Docker Composeを使用して複数のコンテナを管理するためのコマンドです。build
: このターゲットは、docker compose build
コマンドを実行し、Dockerコンテナをビルドします。up
: このターゲットは、docker compose up -d
コマンドを実行し、Dockerコンテナをバックグラウンドで起動します。down
: このターゲットは、docker compose down
コマンドを実行し、Dockerコンテナを停止します。clean
: このターゲットは、docker compose down --rmi all --volumes --remove-orphans
コマンドを実行し、Dockerコンテナを停止し、関連するイメージ、ボリューム、および孤立したコンテナを削除します。login_aws
: このターゲットは、docker compose run aws bash
コマンドを実行し、aws
コンテナにBashシェルでログインします。help
: このターゲットはMakefile内の他のターゲットを説明するためのヘルプを生成します。grep
コマンドを使用して、Makefile内のルールを抽出し、それらを一覧表示します。
このMakefileを使用する場合、make
コマンドに各ターゲット名を渡して、指定されたタスクを実行できます。たとえば、make ps
を実行すると、Dockerコンテナの状態が表示されます。また、make help
を実行すると、利用可能なターゲットの一覧が表示されます。
おわりに
今日は、DockerでAmazonLinux2023にmysqlクライアントをインストールして、動作確認する方法についてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント