LoginSignup
6
7

More than 5 years have passed since last update.

VagrantとDockerでお手軽にDBを用意したい

Last updated at Posted at 2015-01-20

開発時に複数DB用意したいとか、異なるバージョンのアプリを同時に起動しておきたいとか、理由はいろいろあるんですが、そういうときのために。

Vagrantfileはこちら。
https://github.com/mystelynx/osx-docker/blob/master/Vagrantfile

落としてきて、

vagrant up

で、postgres-5432, postgres-5433 というコンテナが立ちあがります。

ポイント

Vagrantfileを1つにまとめた

ホストとなるVirtualBox用のVagrantfileと、Dockerコンテナ用のVagrantfileを分けてる例がたくさんあったのだけど、1つにまとめてみた。

理由はホストVMに設定するポートフォワーディングの設定と、Dockerコンテナに設定するポートの設定が別ファイルになってしまうため見辛かったから。

        d.vagrant_vagrantfile = "./Vagrantfile"
        d.vagrant_machine = "base"

あと、別にファイルを分けなくてもvagrant_machineを設定しとけばホストマシンを指定できることに気付いたから。

Vagrantfile内のVM定義順序

必ず上からホストVM→Dockerコンテナの順で定義しないとダメ。

逆にしてしまうと、
1. Dockerコンテナを起動させようとする
2. Docker Provider内のvagrant_vagrantfileの指定によりホストVMを起動してくれる
3. Dockerコンテナが全て起動する
4. config.vm.defineによりホストVMを直接起動しようとする

ので、ホストVMが2個起動する上に、ポートフォワードの設定で Already Used とか言われエラーで爆死します。。。

postgresqlの公式イメージを使用するように

最初はpaintedfox/postgresqlでやってたんですが、動きはしたんですがよくわからんエラー出たり、dockerサービスのオプションを追加してやらなきゃいけなかったりと大変だったので移行。

vagrant status

で、ホストVM、コンテナが一緒に並んでくれるので、わざわざ`vagrant global-statusをやんなくていい。


弱点

ホストVMを使いまわせないので、1つのホストVMだけで済ませたいという要望は満たせない。そういうときは大人しくVagrantfileを分割して、ホストVM用のVagrantfileをDockerコンテナ定義から参照しましょう。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7