Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

環境構築 | Ubuntu18.04 + docker-composeでrailsアプリケーション開発 その0001

参考にさせて頂いたページ

docker-composeのインストール

docker daemonの起動とか

dockerコマンドをsudo無しで実行する方法

docker-compose を使ってrailsの開発環境を構築する

はじめに

途中で躓きすぎてどの辺が上手くいったのかよくわからないです。

ホスト環境

dockerをインストールしてhello worldをやってみる

sudo無しでdockerコマンドを実行できるようにする

以下のリンクは2つありますが、手順をひとつ試して上手くいかない場合には端末を再起動してみてから、もう一つの方法を試すといいかもしれません。

docker-compose をインストールする

公式ドキュメント通りやってみて上手くいかなかったら個人の記事に頼ります。

docker daemonの起動とか

docker daemonの起動とか、自動で起動する方法とかもここで押さえておくと良さそうです。

railsの環境構築をする

だいたい以下のページを参考にさせて頂きました。

ディレクトリを作成して移動

mkdir project
cd project

docker-compose.ymlを作成

自分は version: '2' にしないとエラーが出ましたのでそこだけ変更しています。

自分のdocker-compose ymlの内容は下記の通りです。

version: '2'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
      - bundle:/usr/local/bundle
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
    # MYSQL_ALLOW_EMPTY_PASSWORD: "yes"  パスワードなしにしたい場合はこれ
    ports:
      - '3306:3306'
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  bundle:
  mysql_data:

Dockerfileを作成

rubyバージョンだけ新しいものにしていますが、それ以外はそのままです。

FROM ruby:2.6.3
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    nodejs \
 && rm -rf /var/lib/apt/lists/*

RUN gem install bundler

WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

Gemfileを作成

Gemfileはそのままです。railsのバージョンも新しい方が良いかもしれませんが。

source 'https://rubygems.org'

gem 'rails', '5.1.4'

Gemfile.lockを作成

空のファイルを作成します。

以下のコマンドで作成しました。

touch Gemfile.lock

コマンド実行

参考ページにならってwebサービスrails newします。

docker-compose run --rm web bundle exec rails new . --force --database=mysql --skip-bundle

docker-compose buildします。

docker-compose build

webサービスにbundle installしてgemをインストールします。

docker-compose run --rm web bundle install

docker-compose upします。

docker-compose up

以下の表示で止まりました。

db_1  | Version: '5.7.26'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

ブラウザでアクセスしてみる

http://localhost:3000/ にブラウザでアクセスしたらrailsの初期ページが表示されました。

一度止める

別タブでprojectディレクトリまで移動して、以下のコマンドで止まります。

docker-compose down

ディレクトリとファイルの所有者変更

このままだとrails newによって生成されたファイルの所有者がrootなので、以下のような感じで所有者を変更すると編集しやすいと思います。

.gitディレクトリを削除

projectディレクトリに.gitディレクトリが作成されているので削除すると良いと思います。

任意のgitリポジトリで管理する

projectディレクトリを丸ごと任意のgitリポジトリにコミットすると楽だと思います。

今後サーバーを起動するとき

以下のように-dを付けてバックグラウンドで起動するのも良いと思います。

docker-compose up -d