0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[簡単に]DockerでSQLをいじれる環境をつくろう[入門]

Last updated at Posted at 2022-11-06

アジェンダ

業務で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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?