プログラミング

DockerでGolang + MySQLのミニマム環境を構築する

更新日:

DockerでGolang + MySQLを使うためのミニマムな環境を構築します。

 

あらかじめ、Dockerについての知識がある前提になりますのでまだあまりよく知らない、もっとDocker自体も知りたいという方はUdemyのゼロからはじめる Dockerによるアプリケーション実行環境構築 から勉強するのがおすすめです。

 

前置きが長くなってしまいましたが、早速初めていきます。

 

 

【入門】Dockerのインストール〜コンテナの起動($ run)、停止($ stop)、削除($ rm)までの全手順まとめ!【使い方も解説する】

  現在5年目の現役エンジニアとしてインフラ領域を担当しています!   今回はDockerをこれから使いたいという人に向けて、インストール方法と初めてのコンテナを立ち上げるまでの手 ...

続きを見る

 

 

1. docker-compose.ymlを作成

以下の通り、docker-compose.ymlを作成します。

 

docker-compose.yml

 

2. コンテナ作成

docker-compose upで1発OK

 

 

3. GolangでHelloWorldしてみる

まずは、動作確認のためにGolangのコンテナに入りHelloWorldしてみます。

 

 

以下の内容でhello.goを保存します。

 

hello.go

 

実行してみます。

 

Hello World!!が無事に出力されました!

 

4. MySQLのデータベースを確認

次に、MySQLのコンテナに入りデータベースの確認をします。

 

 

データベースにログインします。

ログイン情報は、docker-compose.yml内で指定した値になります。ホストにはlocalhostを指定します。

 

user-namegolang-test-user
user-passwordgolang-test-pass
database-namegolang-test-database

 

 

こちらも正常にログインができました。

 

5. GolangからMySQLのデータベースに接続してみる

もう1度Golangのコンテナに入り、hello.goを以下の通り変更します。

 

 

DSNには、上述のデータベース接続で使用した値を記載してください。(mysql-containerはDockerのコンテナ名

main関数内で、sql.Openを実行しエラーの有無でハンドリングしています。

さらに、次のsql.Pingにて接続の確認を行なっています。

 

テスト用にデータベースのパスワードなどをソースコードに記載していますが、本番環境ではセキュリティ的によろしくないのでご注意ください。

 

せっかくなので、Go Modulesを使う

ここで、せっかくなのでGo Modulesを使いたいと思います。

今回importが必要なライブラリは以下の、MySQL用ドライバになります。

 

"github.com/go-sql-driver/mysql"

 

こいつをModules機能でimportしてみます。

 

まずは、hello.goをGOPATH以外の場所に移動します。

 

Moduleを使用する時はGOPATH以外の場所に配置する必要があります。

 

おそらく、現状はコンテナ内の「/go」配下に「/go/hell.go」となっているかと思いますので、これを「/go/hello/hello.go」に移動します。

(デフォルトでは、「/go」がGOPATHになっています。)

 

 

go mod init [モジュール名]を実行する

GOPATHから移動ができたら、Module化を行います。

 

/go/hello/配下に、go.modとgo.sumという2つのファイルが作成されればOKです!!

 

go runで確認

いよいよ接続確認をします。

以下のコマンドで実行し、「接続OK!」となれば成功

 

 

Golangからの接続が確認できました!

 

DockerでGolangを使い倒そう!

 

今回はDockerを使って、Golang + MySQLのミニマム環境を構築しました。

 

Dockerだと必要な時にすぐ環境が作れて、不要になったら丸ごと消すだけなので超絶便利です。

よかったら試してみてください!

 

 

【入門】Dockerのインストール〜コンテナの起動($ run)、停止($ stop)、削除($ rm)までの全手順まとめ!【使い方も解説する】

  現在5年目の現役エンジニアとしてインフラ領域を担当しています!   今回はDockerをこれから使いたいという人に向けて、インストール方法と初めてのコンテナを立ち上げるまでの手 ...

続きを見る

 

 

 

 

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

-プログラミング
-, , ,

Copyright© クラインの備忘壺 , 2019 All Rights Reserved.