[Docker] golangとredisのコンテナを繋いでみた

お世話になっております。
しゃまとんです。

先月のDocker触ってみた話に引き続いて、作ったgolang環境からredisに繋いでみるテストをしました。今回は複数のコンテナでの連携的なやつです。

[Docker] CentOS6でGo言語の開発環境を作ってみた

連携にはdocker-composeという仕組み(?)を使うといい感じにやってくれるらしいです。docker-composeを使うにはdocker-compose.ymlを作成する必要があります。

Docker Compose

golangからredisに接続して操作するには外部のパッケージが必要なので、自分で作成したimageを利用して、環境を用意するDockerfileを作成します。確認用のコードは記事にしたものをそのまま使います。

[golang]redisで構造体を扱ってみる

まずはDockerfileです。
やっているのは、dockerhubからimageを取得し、redigoをgo getし、確認用コードをコピーします。redigoでの接続先はdockerの状況で多少異なるかもしれません。(特に意識しなければ、192.168.99.100:6379)

次にdocker-compose.ymlです。
redisはイメージから取得(image)、go-redisはdockerfileから作成する設定(build)にします。そしてredisにlinkするように設定します。

あとはtest_redis.goを用意したら、イメージとコンテナを作成していきます。まずはイメージをビルドします。

実行すると、go_redisのイメージ生成が行われます。(名前がちょっと変)

images

それではdocker-composeを利用して、コンテナを起動します。redisのイメージがローカルにない場合は、取得しにいきます。今回はrunの後にgo_redisを指定して生成したコンテナに接続するようにしています。

ターミナル表示が切り替わるので、テストコードを実行してみます。

test_redis

こんな感じで接続できました。docker-composeを使うと簡単に複数のコンテナを組み合わせて使えるし、構成もサクッと変更できて便利ですね。

今回もリポジトリにしておいたので、ご自由にお使いくださいませ。
以上です。