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

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

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

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

まずは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を用意したら、イメージとコンテナを作成していきます。まずはイメージをビルドします。

$ cd golang-redis
$ docker-compose build<

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

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

docker-compose run go_redis bash

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

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

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