普段フロントエンドをメインとしているので、バックエンドの環境構築に疎い。 今まではFirebaseを使用することが多く、前回はじめてNestJSで本格的にバックエンドの構築をした。 とは言えNestJSJavascriptである。

Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する

難しかったけど、新しいことに挑戦した感じがしなかった。 しかもその時、とにかく早く実装したかったので、MySQLWindowsにインストールしたうえでテストしていた。

実際の案件ではそんなことありえないので、しっかりDockerで環境を構築し、言語はGo Langを採用することにした。

まずはDockerでMySQLを構築する

docker-compose.yaml を作成する

version: '3'
services:
  mysql:
    image: mysql:latest
    container_name: my-mysql-container
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_DATABASE: your_database_name
      MYSQL_USER: your_username
      MYSQL_PASSWORD: your_password
    ports:
      , "3306:3306"
    volumes:
      - ./data:/var/lib/mysql

で、docker-compose up -dを実行する。

error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject-backend%22%3Atrue%7D%7D": open //./pipe/docker_engine: The system cannot find the file specified.

というエラーが出た。

よく分からないけど、Dockerが起動していないことが原因のようなので、Start-Service dockerコマンドを入力しろとGPTに教えてもらったが、

'Start-Service' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

というエラーが出た。

Dockerを立ち上げる

そういえばDocker Desktopなるものを過去に使ったことがあるのを思い出したので、

Docker Desktopを立ち上げて再度挑戦してみる。

$ docker-compose up -d
[+] Running 11/11
 - mysql Pulled                                                    52.7s
   - 8e0176adc18c Pull complete                                     14.4s
   - 2d2c52718f65 Pull complete                                     14.7s
   - d88d03ce139b Pull complete                                     14.9s
   - 4a7d7f11aa1e Pull complete                                     15.5s
   - ce5949193e4c Pull complete                                     15.7s
   - f7f024dfb329 Pull complete                                     15.8s
   - 5fc3c840facc Pull complete                                     27.9s
   - 509068e49488 Pull complete                                     28.1s
   - cbc847bab598 Pull complete                                     45.2s
   - 942bef62a146 Pull complete                                     45.6s
[+] Running 2/2
 - Network project-backend_default  Created            0.4s
 - Container my-mysql-container                   Started            8.7s

いけた、っぽい。

HeidiSQLで接続してみる。

  • ネットワークの種類: MySQL(必要に応じてSSHトンネリング)
  • ホスト名/IP: 127.0.0.1(これはローカルマシンのIPアドレスです)
  • ユーザー: Docker Composeファイルで指定したMySQLユーザー(この場合、your_username)
  • パスワード: Docker Composeファイルで指定したMySQLパスワード(この場合、your_password)
  • ポート: 3306(これはデフォルトのMySQLポート)
  • データベース: Docker Composeファイルで指定したMySQLデータベース(この場合、your_database_name)

上記手順で接続することができた。