3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerを用いたSQL環境構築

Last updated at Posted at 2025-09-28

はじめに

Dockerを使用した、SQLの環境構築方法になります。
MacでもWindowsでも動作確認は取れているので、共通して使えるような
内容になっています。
(暫定記事なので、内容についてはアップデートできたらと…)

また、ただSQL環境構築をしても面白くないので、
PythonのFlaskと連動させ、todoリストを使用できるまでを想定しています。

〜前提〜

以下の2つがあれば基本的に大丈夫だと思います。

  • Docker for Desktopをインストール済み
  • Linux環境が整っている(Windowsの場合)

ファイルの階層

├── db-env/  
	├── docker-compose.yml ← MySQL用 │
	└── mysql/
		└── Dockerfile
		└── init.sql ← 初期DB作成スクリプト(任意) 

├── todo/
    ├── app.py
    ├── docker-compose.yml ← Flask用
    ├── Dockerfile 
    ├── requirements.txt 
    ├── .env
    	└── static/ 
    	└── templates/

以下URLからダウンロードどうぞ。
https://github.com/chinmaru134/todo_Qiita/tree/main

1. 共通ネットワークの作成

イメージとしては、アプリとDBを繋ぐ「LANケーブル」を先に準備する形です。

bash
docker network create common-net

「common-net」の部分に関しては任意の名称で大丈夫です。

作成した後に、以下のコマンドでネットワーク名が出てくればOKです。

bash
docker network ls

2.docker-compose.ymlで環境構築

「docker-compose.yml」とは何ぞや…?と思うかもしれませんが、
ここでは詳細を省きます。「設計図」というイメージを持っていただければ大丈夫です。

まずはSQL側から行います。

  • SQLのYAMLファイルがある「dv-env」に移動、その後、SQL環境を作る
bash
-- ディレクトリの移動
cd dv-env

-- 設計図(ymlをdockerのコマンドで)を起動させる
docker compose up -d
  • Flask側も同様に起動
bash
-- ディレクトリの移動
cd todo

-- 設計図(ymlをdockerのコマンドで)を起動させる
docker compose up -d
  • 作成したコンテナが起動しているか確認
bash
-- 確認のコマンド
docker ps -a

CONTAINER ID   IMAGE                             COMMAND                   CREATED        STATUS                      PORTS                                         NAMES
xxxxxxxxxx   todo-flask                        "python app.py"           2 days ago     Up 2 days                   0.0.0.0:5002->5002/tcp, [::]:5002->5002/tcp   todo-flask-1
xxxxxxxxxx   mysql:8.0                         "docker-entrypoint.s…"   2 months ago   Up 4 weeks                  0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp   mysql

PORTSの列に番号が出ていれば起動できています。

3.SQLにログインし、テーブルを追加

今回はtodoリストを作成するため、
あらかじめデータベースにテーブルを用意します。

  • SQLにログイン
bash
docker exec -it 「SQLのコンテナID」 mysql -uroot -p

その後、ymlファイルに書いたSQLのパスワードの入力が求められます。
mysql>と表示されたらログインできています。

  • DBの確認
todo.sql
-- DBの確認
SHOW DATABASES;
-- 「flask-db」と出ていることを確認

-- 使用するDBを選択
USE flask_db

-- テーブルの作成
-- todoリスト
CREATE TABLE todo_list (
    todo_id INT AUTO_INCREMENT PRIMARY KEY,
    title varchar(500) NOT NULL,
    insert_time timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

最後に、http://127.0.0.1:5002をWebブラウザに入力すればtodoリストのページが出てきます。

終わりに

内容についてかなり端折って書いたので、時間がある時に記事は手直ししていきます。。。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?