Dockerとdocker-composeでaws-sdk-goを使える環境を作る

スポンサーリンク

はじめに

dockerでgolangの実行環境を勉強がてら作ってみたので残しておきます。

といってもgolangのdockerhubがあるのでそれを持ってくるだけなんですが、vim周りで苦戦しました。。

参考サイト

vim周りで参考にさせていただいたサイト様

vim導入版

初めに作ったvimを導入版。ごちゃごちゃしてますが、ホストと同じ環境にできて満足さん。

ディレクトリ構成

DockerfileでCOPYするものが同ディレクトリにないと指定が出来ないみたいなのでこんな形になりました。

docker-compose.yaml

volumes箇所を少し補足。awsのcredentialsとconfigはホストのものを使ってます。vimの設定が書かれている.vimrcもホストのもを使っています。Dockerfileでも.vimrcをCOPYしてますが最終的に使う設定はdocker-compose.yamlで指定しているほうです。

container_nameは短くgo。

ホストのgolangディレクトリにgoのコードを入れておくと、コンテナの/go/pkgに入れてくれます。

cloudwatch.go

前回のcloudwatch2.goです。今後もなぜか結構出てくるので名前変えましたw

Dockerfile

RUNでごちゃごちゃしてます。 vim -c PlugInstall -c q -c qでプラグインをインストールしてdocker imageを作成し、docker-compose.yamlで本来使いたい.vimrcをCOPYしてます。

./vimrc

DockerfileでCOPYしているのがこちら。この.vimrcは最終的に使うものではなくplguinをインストールするためだけにあります。直接ローカルのものを使うとエラーが出てしまいうまくいかなかったための苦肉の策ですorz

実際に使うdocker-compose.yamlで指定している.vimrcはこちらの投稿にあります

起動方法

docker-compose up -d

起動ログは長すぎるので割愛。vimのPlugInstallでフリーズしたかと思うぐらい止まりますが少し待てば動きましたw

確認方法

docker-compose ps

golang実行方法

docker exec -it go bash

go run cloudwatch.go

コンテナの中に入ってコマンド打つタイプ

コンテナの外から実行するなら↓ go goになってますが1つめのgoがdocker-compose.yamlで指定した名前。2つめのgoがgo run cloudwatch.goのgoコマンド部分です。・・・コンテナ名goじゃないほうがよかったですねw

docker exec go go run cloudwatch.go

停止方法

docker-compose down --rmi all

Dockerfileを直したいならこっち。作成したimageごと消してくれる便利コマンド。

docker-compose down

image消す必要ないならこちらでOK。

vimなし版

vimなしだとすごーくすっきりしたのでこちらも残しておきます。

はじめからこっちで良かった気がするorz

ディレクトリ構成

docker-compose.yaml

Dockerfile

すっきり。

起動方法とか

は同じなので割愛。

起動ログも短くなりました。

最後に

コンテナで簡単golangのはずがvimの話になってる気がするw

この環境使うよりもさらに便利なmulti stage buildというものを教えてもらったので、そちらも後日残しておこうと思います。

関連コンテンツ



シェアする

  • このエントリーをはてなブックマークに追加

フォローする