Go LangでWebAPIを作成するために、まずはDockerでMySQLを構築する

目次

普段フロントエンドをメインとしているので、バックエンドの環境構築に疎い。
今までは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)

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

次に読むおすすめ記事

Go LangでWebAPIを作成するために、Golangでサーバーを立ち上げる

Go LangでWebAPIを作成するために、GolangでDBのデータを取得するmainファイルをそれぞれの責務に分割する

Go LangでWebAPIを作成するために、GolangでMySQLに接続する

Go Langで新規登録のWebAPIを作成したので、認証周りをJWTで作成する。

Go Langで作成したAPIをSwagger UIで表示する

この記事に対するコメント

お気軽にコメントを下さい

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このブログは製作者の開発ログであり、厳密なテックブログではありません。
問題解決にいたらず、筆を置いているページもありますので、ご了承ください🙇‍♀️