LoginSignup
6
7

More than 5 years have passed since last update.

Vagrant+Docker使ってRedmineを立ててみた

Last updated at Posted at 2017-12-08

はじめに

ローカルにRedmine立てたいっていうのと,ちらほら耳にしてたVagrantやDockerを触ってみたいというので試してみました.
想像以上にVagrantすげーDockerすげーってなったので記事にしてみる.
(理解が浅いから間違いとかあったらツッコミが欲しい)

想定読者

  • 手っ取り早くローカルにRedmineを立てたい人
  • VagrantとDockerの名前くらいは知ってる人/ちょっと触ってみたい人

できること

  • めっちゃお手軽に&環境に依存せずにローカルにRedmineを立てる
  • VagrantとDockerすげーって感想を抱く

やること

  1. VagrantとVirtualBoxインストールして
  2. 既存のVagrantfileをダウンロードして
    • Vagrantfile: VMの構成を記述したテキストファイル
  3. Redmineを立てるためにVagrantfileをちょっと編集して
    • ここでDocker使う
  4. VMを起動する
    • $ vagrant upと叩けばVagrantfileに記述した構成のVMを作ってくれる

コレだけです.

1回Vagrantfile書いちゃえばそれを使いまわせるので,
僕が編集したものを配布すれば3.の手順は必要ないのですがせっかくなので.

(追記)
できることで「お手軽に&環境に依存せずに」 と謳っているのでVagrantfileを公開してもっとお手軽感をだせるようにしてみました.

ちなみに普通にローカル環境にRedmine立てるなら,

  1. Rubyをインストールして
  2. MySQLをインストールして
  3. Redmineのソースをダウンロードして
  4. DBとDBのユーザー作って
  5. DBの接続情報をちょっと編集して
  6. Rubyの依存ライブラリをインストールして
  7. Session store secret を生成して
  8. DBスキーマオブジェクトを生成して
  9. DBにデフォルトデータをセットして
  10. ファイルシステムの権限変えて
  11. Redmineを起動

という手順が必要です.
Redmineの公式ドキュメントみながら書いたけど間違えてたらごめんなさい.
(実はVagrant+Dockerを試す前にこの手順にしたがってRedmine立てたから問題ないとは思う)

各種ソフトウェアの概要

この記事を読めばだいたい雰囲気わかるかなと思います.

VagrantやDockerに詳しくない方が読んでくれているとは思いますが,
説明されてる記事はたくさんあるのでここでは省きます。

1. VagrantとVirtualBoxインストールして

自身の環境にあわせてVagrantVirtualBoxをそれぞれインストールします.

2. 既存のVagrantfileをダウンロードして

Vagrantfileをダウンロード

今回はCoreOS用のVagrantfileをダウンロードします.

hostOS
$ cd
$ mkdir vm
$ cd vm
$ git clone https://github.com/coreos/coreos-vagrant.git

終わるまで待ちます.

(追記)
もしくは僕が編集したVagrantfileをダウンロードします.
ダウンロードができたら3. Vagrantfileをちょっと編集してはスキップして4. VMを起動へ.

hostOS
$ cd
$ mkdir vm/vagrant-redmine
$ cd vm/vagrant-redmine
$ curl -O https://gitlab.com/otuhs_d/VagrantDockerRedmine/raw/master/Vagrantfile

3. Vagrantfileをちょっと編集して

Vagrantfileを編集

まずはVagrantfileを開きます.
エディタは各自好きなものを使ってください.

coreOS
$ cd coreos-vagrant
$ vim Vagrantfile

Vagrantのポートフォワーディングの設定をします.
今回はCoreOSの10080番ポートをホストPCの12345番ポートにマッピングします.

Vagrantfileの65行目あたりに
config.vm.network :forwarded_port, guest: 10083, host: 12345を追加

前後の行もいれるとこんな感じになってるかと思います.

Vagrantfile
Vagrant.configure("2") do |config|
  # always use Vagrants insecure key
  config.ssh.insert_key = false
  # forward ssh agent to easily ssh into the different machines
  config.ssh.forward_agent = true

  config.vm.network :forwarded_port, guest: 10083, host: 12345

  config.vm.box = "coreos-alpha"
  config.vm.box_url = "https://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant_virtualbox.json"

次に,VagrantのDocker Provisionerを使って

  • Dockerのインストール
  • コンテナの実行(PostgreSQLとRedmine)

をVMの起動時に自動でおこなうよう設定します.

Provisioning
Provisioners in Vagrant allow you to automatically install software, alter configurations, and more on the machine as part of the vagrant up process.

Docker Provisioner
The Vagrant Docker provisioner can automatically install Docker, pull Docker containers, and configure certain containers to run on boot.

詳しくはProvisioningDocker Provisinerの公式ドキュメントを参照ください.

Vagrantfileの83行目あたりに以下のブロックを追加

config.vm.provision "docker", run: "always" do |d|
  d.run "sameersbn/postgresql", args: "--name=postgresql-redmine -d \
                                       --env='DB_NAME=redmine_production' \
                                       --env='DB_USER=redmine' --env='DB_PASS=password' \
                                       --volume=/srv/docker/redmine/postgresql:/var/lib/postgresql"
  d.run "sameersbn/redmine",    args: "--name=redmine -d \
                                       --link=postgresql-redmine:postgresql --publish=10083:80 \
                                       --env='REDMINE_PORT=10083' \
                                       --volume=/srv/docker/redmine/redmine:/home/redmine/data"
end

前後の行もいれるとこんな感じになってるかと思います.

Vagrantfile
    # enable ignition (this is always done on virtualbox as this is how the ssh key is added to the system)
    config.ignition.enabled = true
  end

  config.vm.provision "docker", run: "always" do |d|
    d.run "sameersbn/postgresql", args: "--name=postgresql-redmine -d \
                                         --env='DB_NAME=redmine_production' \
                                         --env='DB_USER=redmine' --env='DB_PASS=password' \
                                         --volume=/srv/docker/redmine/postgresql:/var/lib/postgresql"
    d.run "sameersbn/redmine",    args: "--name=redmine -d \
                                         --link=postgresql-redmine:postgresql --publish=10083:80 \
                                         --env='REDMINE_PORT=10083' \
                                         --volume=/srv/docker/redmine/redmine:/home/redmine/data"
  end

  # plugin conflict
  if Vagrant.has_plugin?("vagrant-vbguest") then

4. VMを起動

さて,あとはVMを起動するだけです.

hostOS
$ vagrant up

立ち上がったら,ブラウザを開いてhttp://localhost:12345にアクセス&Redmineのページが表示されたら完了です.


興味を持つのが遅い感が否めませんがこれからもっと深く学んで行きたい所存.

おわり.

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