世界を旅して人生を楽しもう。コメントを書くGo言語のRESTアプリケーションを開発用にオートリロード可能な状態でDocker化する方法(fresh編)Go言語によるRESTアプリケーションの開発を加速するために、Docker化し、freshでオートリロードを可能にする方法を紹介します。はじめに以前の記事でGo言語でRESTアプリケーションを実装する方法を紹介しました。今回は、開発環境を簡単に構築できるようにするために、Docker化し、その際に、「fresh」というオートリロード用のモジュールを導入する方法を紹介します。それでは、始めましょう。以下の準備が完了している必要があります。Go言語がインストールされていることDockerがインストールされていること以前の記事で実装したRESTアプリケーションが準備されていること(いつも通りチュートリアル形式で進めていきますが、内容を参考にするだけで良いなら不要です)詳しくは「環境」を参照してください。Go言語のRESTアプリケーションを開発用にオートリロード可能な状態でDocker化する必要なファイルとフォルダを準備する以前の記事で実装したRESTアプリケーションを準備して、そのプロジェクト内に必要なファイルとフォルダを作成します。wait-for-it.sh今回はローカルにPostgreSQLのデータを残すためにdataフォルダも作成します。PostgreSQLのデータベースが起動するのを待つために「wait-for-it」を使います。「wait-for-it.sh」にはGitHub上のスクリプトをコピペしてください。Dockerファイルを作成するDockerファイル内でオートリロードのためのモジュール「fresh」を設定するようにします。Composeの設定に合わせて変更する接続先を「localhost」から「my_postgres」に変更します。router))}動作確認では動作確認してみましょう。Docker化したRESTアプリケーションが正しく動くか確認します。}]次に、オートリロードが動作するか確認するために、エラーメッセージを変更してみます。wrong"}正しく動くことが確認できました。おまけプロダクション用にDocker化するGo言語はコンパイル言語なので、プロダクション用にはコンパイルして実行可能な状態にする必要があります。alpineで軽量のDockerイメージにする場合のDockerファイルは以下のようになります。["/app/server"]最後にいかがでしたか?これでGo言語のRESTアプリケーションをDocker上で開発できるようになったことでしょう。APIを作る方法を紹介します。はじめにGo言語にはRubyのRailsやPythonのDjango、JavaScriptのExpressのようなAPIを作る上で絶対的なフレームワークはなく、複数のフレームワークが乱立しているような状態です。Muxというルーティング用のライブラリを使ってAPIを実装することにします。題材は何でも良いのですが、Twitterっぽいツイートを管理するAPIにしてみましょう。toolkitというGo言語用のWebツールキット郡の一つで、主にルーティング用のライブラリです。以下の準備が完了している必要があります。GoがインストールされていることDockerがインストールされていること詳しいバージョンは「環境」を参照してください。今回はデータベースとしてPostgreSQLを使い、Dockerで準備します。Dockerで起動時にテーブルを作成したいので、それ用のSQLファイルを準備します。initdb/1_create_tables.sql「1_create_tables.sql」は以下のようにします。0);「tweets」テーブルを作成するSQLです。データベースとテーブルの作成DockerでPostgreSQLを準備し、起動時に先程作成したSQLを読み込ませます。\qうまくテーブル作成まで完了しました。今回は一時的なデータベースなので、「––rm」オプションを指定しており、停止するとコンテナが削除されます。(データベース及びデータは残りません)また、公開ポートはデフォルトの5432としているので、ローカルでPostgreSQLが起動している場合は、ポート番号を変更してください。APIの作成まずは、必要なパッケージやデータベースを準備しましょう。ベースプロジェクトの作成プロジェクト用のフォルダを作成し、パッケージをインストールします。それから、今回実装に必要なフォルダとファイルを作成します。respond.go全体像が見えるようになりました。APIの実装さくさく実装しましょう。router))}これで実装完了です。最後に作ったAPIの動作確認をしてみましょう。3000...curlでCRUDを確認します。9999}]大丈夫そうですね。これで動作確認は完了です。Muxを使ってAPIを作成できるようになったと思います。今後流行るプログラミング言語の筆頭はGo言語です。CodeのGo言語のための設定方法を紹介します。Codeは人気のGo言語においても十分なコーディング環境が実現できます。プラグインを入れるだけです。以下が完了している必要があります。Codeの基本設定は以前の記事を参考にしてください。CodeでGoを扱うためにはGo用のプラグインを入れる必要があります。これでGoファイルを開くと以下のようにダイアログが表示され、「Install」をクリックすることで必要なモジュールがインストールされます。「GOPATH」はデフォルトで「~/go」になります。CodeでGoの2種類の設定方法を紹介します。一つは、よくあるファイルの保存時に自動的にフォーマットする設定方法で、もう一つは、ファイルを自動的に保存する設定方法です。自動フォーマットにする設定は以下です。true,...}設定可能なフォーマッタは「gofmt」、「goimports」、「goreturns」、「goformat」になります。自動保存のための設定Goはコンパイル言語のため、ファイルが保存されてコンパイルされた後でないと正しく動作しません。そのため、自動フォーマットの代わりに自動保存の設定をする場合があります。自動保存の設定は以下です。true,...}詳しくは公式ドキュメントを参照してください。おまけGo用のプラグインのエラーの対処法MacでGo用のプラグインを使う場合に以下のエラーが発生することがあります。lldb-server」これは、以下を実行することで解決できます。--installデバッグ用のライブラリのインストールGo言語をデバッグするには「delve」というデバッガーをインストールする必要があります。VSCode上からコマンドパレッドで以下のように検索します。「dlv」にチェックを入れて「OK」をクリックすればローカルにインストールされます。以下のようにコマンドラインからインストールすることも可能です。github.com/go-delve/delve/cmd/dlvデバッグ方法は公式ドキュメントを参照してください。CodeのGo設定ができたと思います。Go言語のコーディングを楽しみましょう。AuthorKD世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。0.0010このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。