Go言語のサンプルコードをGitからクローンして、ローカル環境でテストして、IBMクラウドにデプロイして公開するまでの流れを書いたものです。Bluemix のカタログには、以下の様なアイコンがあり、Go言語で書かれたサンプル・インスタンスを起動できるのですが、その後に何をしたら良いのか良くわかりません。そこで、GitからクローンしたGo言語のソースコードを自分のPC上でコードを編集して、ビルド&テスト、そして公開といった流れに沿って、確認してみました。
ローカル環境にGo言語の開発環境をインストール
Ubuntu Linuxリポジトリから Go言語をインストールする
参考: Go Ubuntu Wiki https://wiki.ubuntu.com/Go
次はインストールでコマンドを実行する順番です。
$ sudo apt-get update
$ sudo apt-get install golang
$ go version
go version go1.2.1 linux/amd64
結構古いバージョンなので、goenvを利用してGo言語のバージョンを変更できる様にインストールする事にします。
goenvを利用してGo言語をインストール
参考:GitHub https://github.com/syndbg/goenv
インストールする方法などは、pyenvやndenvと同じ要領です。
git clone https://github.com/syndbg/goenv.git ~/.goenv
ログイン・シェルに設定を加えます。
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(goenv init -)"' >> ~/.bash_profile
利用できるバージョンをリストして、インストールしてから、対象のディレクトリ下でバージョンを指定します。 globalのオプションで全体指定もできます。
goenv install -l
goenv install 1.9.2
goenv local 1.9.2
切り替わっていることの確認です
$ go version
go version go1.9.2 linux/amd64
パッケージ依存関係ツールのインストール
参考:https://github.com/tools/godep
Go言語で開発するためのディレクトリを作成して移動して、環境変数GOPATHを設定します。
それから、go get github.com/tools/godep
を実行します。 この例のディレクトリは share/golang
~$ echo $GOPATH
/home/vagrant/share/golang
~$ cd $GOPATH
~/share/golang$ ls
~/share/golang$ go get github.com/tools/godep
~/share/golang$ ls
bin pkg src
Go言語のサンプルアプリをcloneしてビルド
IBM Cloud (旧 Bluemix)のサンプルコードをgit clone
してからビルドします。 このサンプル・アプリ https://github.com/IBM-Cloud/go-hello-world にあります。
cd $GOPATH/src
git clone https://github.com/IBM-Cloud/go-hello-world
cd go-hello-world
make
もし、バージョンが古くてエラーになる場合は、goenvでグローバルにgo言語のバージョンを指定します。
goenv global 1.9.2
ローカル環境でテスト
ビルドできた実行モジュールを次の様に実行して、curlコマンでアクセスします。
curlコマンドと応答です。 HTMLとJSON形式と両方で応答がきていることがわかります。
~$ curl http://localhost:8080
<html><h1>
Main website
</h1>
</html>
~$ curl http://localhost:8080/hi
{"message":"hi"}
終わったら必須ではないですが、Cloud Foudry上でビルドできる事を確認するために make clean
を実行しておきます。
IBM Cloud へデプロイして公開する
IBM Cloud のアカウントの取得
もしも、IBM Cloud のアカウントが無い場合は、https://console-regional.au-syd.bluemix.net/registration/?target=%2Fdashboard%2Fapps から作成します。
アカウント取得後に、画面の案内に従って、コマンドラインのツールもインストールします。
IBM Cloud Cloud Foundryアプリとしてデプロイ
デプロイの前に、設定を2箇所修正します。
- manifest.yml の hostname が一意になる様にします。 例えば
host: go-hello-world-takara
の様にホスト名の末尾に自分の名前などを追加しても良いと思います。 -
Godeps/Godeps.json
ファイルの"GoVersion": "go1.9.1" という様に、新しいバージョンに変更します。
ログインして bx cf push
する事で、Cloud Foundry アプリケーションとしてデプロイできます。
$ bx login
$ bx cf push
テスト
デプロイする時に、urlsと表示されるところが、WebアプリケーションのURLになります。
$ bx cf push
<中略>
requested state: started
instances: 1/1
usage: 128M x 1 instances
urls: go-hello-world-takara.mybluemix.net
curlでアクセスして確認します。
$ curl https://go-hello-world-takara.mybluemix.net/
<html><h1>
Main website
</h1>
</html>
$ curl https://go-hello-world-takara.mybluemix.net/hi
{"message":"hi"}
まとめ
やってみて、IBM Cloud で Go言語を利用して、Webアプリケーションを開発するのも簡単なんだということが判りました。
DBなどのサービスをバインドして、そのサービス資格情報を取得する方法など、書いていけたら良いですね。
参考資料
1 IBM-Cloud/go-hello-world https://github.com/IBM-Cloud/go-hello-world
2 今さらだけど、Go言語に入門するための情報源 https://qiita.com/MahoTakara/items/10fede35c03db1e3b849