きしだのはてな このページをアンテナに追加 RSSフィード

2016-03-13(日) Vagrant+DockerでInfluxDBとnginx

Vagrant+DockerでInfluxDBとnginx 03:06  Vagrant+DockerでInfluxDBとnginxを含むブックマーク

最近よく聞くVagrantとかDockerとか、スルーしてたけど触っといたほうがいいかなと思って、試してみた。


Vagrantのインストール

Vagrantは、なんかVirtualBoxVMとかの構成を勝手にやってくれるやつ。

ここから適当なのをダウンロードしてインストールする。

Download - Vagrant by HashiCorp


VirtualBoxも必要なので、インストールしておく

Downloads – Oracle VM VirtualBox


DockerはLinuxでしか動かないので、ふつうのパソコンの場合はVM経由で使う必要があって、それでVirtualBoxとか使うと思うけど、そんときにVagrantが便利、という話。


VagrantUbuntuを起動

なんか、こんな感じの内容でどこかにVagrantfileという名前のファイルを作る。

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision "docker"
  config.vm.network "private_network", ip: "126.0.56.101"
  config.vm.provider "vertualbox" do |vb|
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end

IPが指定されてなかったり、DNSが効いてなかったり、いろいろハマった。

ここにDockerも仕込んでおく。


そのディレクトリにいって

> vagrant up

とするとVMが起動。


VirtualBoxマネージャで確認してみます。

おぉ!

f:id:nowokay:20160314022218p:image


> vagrant ssh

とすると、sshできる。お手軽。


influxdbとnginxを起動するDockerfile

なんか、Dockerは最終的にコマンドをひとつしか実行できないので、こんなshファイルを作っておきます。

場所は、Vagrantfileの下あたり。dockerとかディレクトリ作っておくのがいいと思う。

#!/bin/sh
/usr/sbin/nginx -g "daemon off;" &
influxd

改行コードがLFじゃないと怒られるので注意。ハマった。

&とかつけてるのがキモい。たぶん、docker composeとか使うのが大人。


そして、同じところにDockerfileという名前でこんなのを作ります。

FROM ubuntu:latest

EXPOSE 8086
EXPOSE 8083
EXPOSE 80

RUN apt-get install -y wget
RUN wget https://s3.amazonaws.com/influxdb/influxdb_0.10.3-1_amd64.deb
RUN dpkg -i influxdb_0.10.3-1_amd64.deb

RUN apt-get install -y nginx

ADD run.sh /run.sh
RUN chmod +x /run.sh

CMD ["/run.sh"]

Dockerビルドして実行

そしたら、ビルドして実行します。

VagrantSSHします。Vagrantfileのあるところが/vagrantにマウントされてるので、そこからdockerfileを置いたところに行きます。


んで、ビルド

$ docker build -t kishida/influx-nginx .

うまくいって、Successfully builtって出たら実行

$ docker run -p 80:80 -p 8083:8083 -p 8086:8086 --name influx-nginx kishida/influx-nginx

Vagrantで指定してた126.0.56.101にブラウザでつないでみる。

f:id:nowokay:20160314022220p:image

おぉ、nginx動いてる。


ポート8083でinfluxdbの管理ツールが動いてるのでつないでみる。DB自体は8086ポート。

f:id:nowokay:20160314022219p:image

おぉ。


終了

起動のときに--nameで指定した名前で終了

$ docker stop influx-nginx

もう一回起動するときはstart

$ docker start influx-nginx

感想

ようわからんけど、なんか楽しさがある。

しかし、VagrantもDockerも、それ自体を使うだけなら難しくないけど、使いこなそうとするとシェル力が問われる気がした。あとはhubをどう使いこなすかとか。

まあでも、ぼくはLinux力とかシェル力ないほうだけど、じんわりといろいろ知ってるんだな、という気分になれてよかった。

Docker 実践ガイド (impress top gear)

Docker 実践ガイド (impress top gear)

トラックバック - http://d.hatena.ne.jp/nowokay/20160313