アジェンダ
業務でSQLでデータ抽出を行うことが増えました。
SQLコマンドは開発業務を行う上で、基本言語のように扱えなければいけませんが、練習する環境があまりない…
なので、どんな環境でも簡単にSQLでDBを操作できるようにしたい!
Dockerを用いて、SQLをいじれる環境を簡単に構築できるように、備忘録として残していきます。
※使用するDBはMySQLです。
前提
- ターミナル上でMySQLをいじりたい
- Dockerを用いて爆速で環境構築したい
- 入門者である
環境構成
- mac OS ventura 13
- mysql: 8.0.29-debian
ディレクトリ構成
sqlmanabu
└ Docker-Compose.yml
└ mysql
├ Dockerfile
├ my.cnf
└ db
各種ファイルの詳細
Docker-Compose.yml
version: "3.8"
services:
db:
build:
context: .
dockerfile: ./mysql/Dockerfile
ports:
- "3306:3306"
container_name: sqlmanabu
image: sqlmanabu
platform: linux/amd64
volumes:
- ./mysql/db:/docker-entrypoint-initdb.d
environment:
- MYSQL_DATABASE=sqlmanabu
- MYSQL_USER=admin
- MYSQL_PASSWORD=admin
- MYSQL_ROOT_PASSWORD=admin
- TZ="Asia/Tokyo"
Dockerfile
FROM mysql:8.0.29-debian
RUN apt-get update \
&& apt-get install -y locales \
&& sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=ja_JP.UTF-8 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
ENV LC_ALL ja_JP.UTF-8
EXPOSE 3306
COPY ./mysql/my.cnf etc/my.cnf
my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
Makefile
build:
docker-compose build
up:
docker-compose up -d
sql:
docker exec -it sqlmanabu bash -p
down:
docker-compose down
MySQLサーバーの起動
zsh
# Dockerイメージのビルド
$ make build
# Dockerコンテナの作成
$ make up
# コンテナにログイン
$ make sql
# MySQLサーバーへログイン
$ mysql -u root -p -h 127.0.0.1
$ Enter password: admin
# 以下が表示されれば成功
$ Welcome to the MySQL monitor. Commands end with ; or \g.
$ Your MySQL connection id is 11
$ Server version: 8.0.29 MySQL Community Server - GPL
$ Copyright (c) 2000, 2022, 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>
success!
終わりに
一旦備忘録としてメモ程度に残しています。
※なので「こうして、次にこうして」という手順を、今時点では残しておりません。肉付けを徐々にしていきます…
徐々に肉付けしていければと思いますので、ご指摘等あればお気軽にコメントいただければ幸いです😋
めちゃくちゃ参考にしたリンク
https://zenn.dev/takuho/articles/efc40344f3122e
https://next-k.site/blog/archives/2022/04/27/785