Rails5 + Sidekiq + Redis + Postgresql + Nginx をdocker-composeで構築

Web界隈ではDockerでの開発が主流になりつつあるかと思います。
一コンテナだけならDockerfileおいて、docker run で起動!ハッピーに開発ができます。

しかし、DatabaseやWorker, proxyなどを入れたいとなると...
手が止まる人も多いかと思います。
コンテナ同士の接続はうまくいかないし、linksやdepends_onなどなどどうやって書くんだよって
なるんですよね。

なので、
僕がよく利用するdocker-compose.ymlを公開します。笑

概要

広告

dockerサービスの構成

用意する環境は、Rails, Nginx, Sidekiq, Redis, PostgreSQLです。
nginxは通常のイメージではなく、proxy用のnginxです。
jwilder/nginx-proxyのイメージですが、これめちゃくちゃ便利です。
bridgeをつくり、環境変数を指定するだけで、自動で名前解決してくれます。

postgresqlでなくmysqlでもさほど変わりません。
他の人のdocker image使っていけるはずです。

docker-compose.ymlの中身

これがdocker-compose.ymlです。
rails5, nginx, redis, postgresql, sidekiqを構築します。
/tmp/postgresql-dataにデータベースの実データを永続化しています。

ルートディレクトリに.envファイルを作成してください。
そこで、環境変数系のあれこれを書き込めば、動きます。

volumeにzがついているのは、
selinuxでのおまじないみたいなものなので
とりあえず書いといてください。
気が向いたらまとめます。

Rails5 + Alpine のDockerfile

Rails5用のDockerfileは別の記事にありますので、どうぞ。

Alpine + Ruby2.6 + Rails5 API で使用するDockerfileを共有する

Posgresql + ubuntu のDockerfile

postgresqlもalpineにしようと思ったけど
UTF設定とかいろいろ扱いやすいようにubuntuにしています。

とりえあえず。
postgresqlのDockerfileは
mkdir pgを実行して、その配下に配置してください。



RailsAPIを使用したアプリケーションの開発!決まったらとりあえずこのdocker-compose.ymlを使えば
いち早く開発・実行環境を用意できます。
みんな使ってみてね。



じゃあね〜〜。