💽

検証用のDBコンテナを作成する

2024/03/26に公開
  • ※ 本記事は作業ログです
  • 最近、DB絡みで色々と検証することが増えたのでDBコンテナを立てておきたい
    • 色々なDBを使うことがあるので、それぞれのDBを使うためのコンテナを作成します
    • 今回は「MySQL」, 「PostgreSQL」のコンテナ
    • SQL Serverも作りたかったのですが、色々と設定が必要なので後回し・・・

環境

  • M1 Mac
  • Docker Desktop for Mac

docker-compose.ymlを作成する

  • 「PostgreSQL」, 「SQL Server」のコンテナを作成するためのdocker-compose.ymlを作成していきます
version: '3.8'

services:
  mysql:
    image: mysql:latest  # MySQLの最新版を使用
    environment:
      MYSQL_ROOT_PASSWORD: example
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql

  postgres:
    image: postgres:latest  # PostgreSQLの最新版を使用
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: example
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

# データを永続化するためにボリュームを定義
volumes:
  mysql-data:
  postgres-data:

コンテナを起動する

  • docker-compose.ymlがあるディレクトリで以下のコマンドを実行します
  • 以下のコマンドをinit.shに記述しておく
# Docker Composeを使用してコンテナを停止し、ボリュームを削除する
echo '# docker compose -p db-sample down -v'
docker compose -p db-sample down -v

echo '# docker compose -p db-sample up -d'
docker compose -p db-sample up -d

echo ''
echo '# docker compose ps'
docker compose -p db-sample ps
sh ./init.sh
takumi.kuroiwa % sh init.sh
# docker compose -p db-sample down -v
[+] Running 5/5
 ✔ Container mysql-container       Removed                                                                                                                                                                              0.0s 
 ✔ Container postgres-container    Removed                                                                                                                                                                              0.2s 
 ✔ Volume db-sample_mysql-data     Removed                                                                                                                                                                              0.1s 
 ✔ Volume db-sample_postgres-data  Removed                                                                                                                                                                              0.1s 
 ✔ Network db-sample_default       Removed                                                                                                                                                                              0.1s 
# docker compose -p db-sample up -d
[+] Running 5/5
 ✔ Network db-sample_default         Created                                                                                                                                                                            0.0s 
 ✔ Volume "db-sample_mysql-data"     Created                                                                                                                                                                            0.0s 
 ✔ Volume "db-sample_postgres-data"  Created                                                                                                                                                                            0.0s 
 ✔ Container mysql-container         Started                                                                                                                                                                            0.6s 
 ✔ Container postgres-container      Started                                                                                                                                                                            0.6s 

# docker compose ps
NAME                 IMAGE               COMMAND                  SERVICE             CREATED             STATUS                  PORTS
mysql-container      mysql:latest        "docker-entrypoint.s…"   mysql               1 second ago        Up Less than a second   0.0.0.0:3306->3306/tcp, 33060/tcp
postgres-container   postgres:latest     "docker-entrypoint.s…"   postgres            1 second ago        Up Less than a second   0.0.0.0:5432->5432/tcp

コンテナに接続する

  • mysql, postgresコンテナに接続してみます
# MySQLに接続
echo '# docker exec -it mysql-container mysql -u root -p'
docker exec -it mysql-container mysql -u root -p
takumi.kuroiwa % docker exec -it mysql-container mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.3.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, 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> 
# PostgreSQLに接続
echo '# docker exec -it postgres-container psql -U postgres -d sample_db'
docker exec -it postgres-container psql -U postgres -d sample_db
takumi.kuroiwa % docker exec -it postgres-container psql -U user -d sample_db
psql (16.1 (Debian 16.1-1.pgdg120+1))
Type "help" for help.

sample_db=# 

最後に

  • これで、MySQL, PostgreSQLのコンテナが立ち上がり、接続できるようになりました
    • 今後はこれらのコンテナをベースに、色々と検証を行っていきます

Discussion