DockerでAmazonLinux2023にmysqlクライアントをインストールする

スポンサーリンク
DockerでAmazonLinux2023にmysqlクライアントをインストールする 環境構築
DockerでAmazonLinux2023にmysqlクライアントをインストールする
この記事は約8分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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コマンドを使用して呼び出すことができ、特定のアクションを実行します。

ここでは各ルールとその目的を説明します:

  1. SHELL = /bin/bash: この行は、MakefileがBashシェルを使用することを指定します。
  2. WORK_DIR = ./: WORK_DIRは、作業ディレクトリを指定します。このMakefileでは、指定されたディレクトリ内のDockerコマンドが実行されます。
  3. .DEFAULT_GOAL := help: この行は、Makefileのデフォルトのターゲット(目標)をhelpに設定します。デフォルトでmakeコマンドを実行したときには、helpターゲットが実行されます。
  4. .PHONYルール: .PHONYは、makeに対して指示する特別な目標です。これらの目標は実際のファイルのタイムスタンプを無視して、常に実行されます。
  5. ps: このターゲットは、docker compose psコマンドを実行し、Dockerコンテナの状態を表示します。docker composeコマンドは、Docker Composeを使用して複数のコンテナを管理するためのコマンドです。
  6. build: このターゲットは、docker compose buildコマンドを実行し、Dockerコンテナをビルドします。
  7. up: このターゲットは、docker compose up -dコマンドを実行し、Dockerコンテナをバックグラウンドで起動します。
  8. down: このターゲットは、docker compose downコマンドを実行し、Dockerコンテナを停止します。
  9. clean: このターゲットは、docker compose down --rmi all --volumes --remove-orphansコマンドを実行し、Dockerコンテナを停止し、関連するイメージ、ボリューム、および孤立したコンテナを削除します。
  10. login_aws: このターゲットは、docker compose run aws bashコマンドを実行し、awsコンテナにBashシェルでログインします。
  11. help: このターゲットはMakefile内の他のターゲットを説明するためのヘルプを生成します。grepコマンドを使用して、Makefile内のルールを抽出し、それらを一覧表示します。

このMakefileを使用する場合、makeコマンドに各ターゲット名を渡して、指定されたタスクを実行できます。たとえば、make psを実行すると、Dockerコンテナの状態が表示されます。また、make helpを実行すると、利用可能なターゲットの一覧が表示されます。

おわりに

今日は、DockerでAmazonLinux2023にmysqlクライアントをインストールして、動作確認する方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました