その他
    ホーム 技術発信 DoRuby Dockerを試してみる(3)
     

    Dockerを試してみる(3)

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Dockerを試してみる(2)の続きです。 今回は複数のコンテナを楽ちんに管理したい〜というツールを試してみました。

    ■docker-compose

    コンテナを複数起動すると管理が煩雑になったり、コンテナの起動順番を気にしながらとか面倒なことが多くなります。また、runでコンテナを実行する際もコマンド引数を覚えたりするのが大変で結局シェルスクリプトを書いたりとか。

    そんな面倒を解決してくれるのが、docker-compose というコマンドです。

    docker-composeは、Windows/macOS版の docker-toolbox では利用可能になっています。
    標準でインストールされていない場合は、docker公式のドキュメント に従いインストールします。

    docker-composeの流れ

    1. docker-compose.yml を編集
    2. docker-compose up を実行
    3. docker-compose downでコンテナ終了&削除

    前提

    railsのサンプルアプリを作って、その直下に Dockerfile を配置します。
    今回はクイックスタートを参考に、ruby自体もコンテナを使います。

    $ mkdir myapp && cd myapp
    $ vi Dockerfile
    $ vi Gemfile
    $ touch Gemfile.lock
    $ vi docker-compose.yml
    $ docker-compose run web rails new . -B --force
    $ ls -l
    $ sudo chown -R myuser:mygroup
    $ vi Gemfile
    rubyracerのコメントを外す
    $ docker-compose build
    

    Dockerfile,Gemfileはこちらを参考

    docker-compose.yml

    設定ファイルです。railsでおなじみのYAML形式です。

    version: '2'
    services:
      web:
        build: .
        command: bundle exec rails s -b 3000 -b '0.0.0.0'
        ports:
          - "3000:3000"
        volumes:
          - .:/myapp
        links: 
          - db
      db:
        image: mysql
        environment:
         - MYSQL_ALLOW_EMPTY_PASSWORD=1
    

    アプリ起動

    database.yml のホストを db に設定します。その後に次のコマンドを実行します。

    $ docker-compose up   # -d オプションを付けるとバックグラウンド実行
    $ docker-compose exec web rake db:create
    

    ブラウザで、開くといつもの画面が表示されます。
    http://(docker-machine ipのアドレス):3000/

    モバイルバージョンを終了