##はじめに
Railsを使っていてVueも一通り学んだのでRailsとVueを使えるように環境構築してみようと思い勉強してみたことをアウトプット。
Rubyのバージョンは2.5.3
Railsのバージョンは5.2.3
DBはMysqlを使用
Railsのプロジェクトを作成するディレクトリを事前に作成しておく
$ mkdir <任意のフォルダ名>
フォルダを作成したら作成したディレクトリに移動しておく
##Docker用のファイルの作成
Dockerのコンテナを作成するためのファイルを作成
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
の4つのファイルを作成する。
FROM ruby:2.5.3
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update && \
apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y yarn
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
apt-get install nodejs
RUN yarn add node-sass
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
db-volume:
source 'https://rubygems.org'
gem 'rails', '5.2.3'
Gemfile.lock
はbuildした後に自動的に記述されるので空にしておく。(ファイルは必要)
この4つのファイルを作成し、先ほど作成したディレクトリに置く。
##Railsプロジェクトの作成
次にRailsのプロジェクトを作成するため次のコマンドを実行
$ docker-compose run web rails new . --force --database=mysql
(rails newの . は現在いるディレクトリにそのままプロジェクトを作成するというもの)
プロジェクトの作成が終わったらdocker-compose ps
でコンテナが作成されているか確認。
次にRailsプロジェクトのdatabase.ymlを編集します。
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
passwordとhostの部分をdocker-compose.ymlの記述と合わせます。
$ docker-compose up
コマンドでコンテナを立ち上げ、localhost:3000に接続し、RailsのHello World画面が表示されれば無事成功です!
##Vue.jsの導入
vue.jsをRailsで使用できるようにするためにまずはWebpackerの導入が必要。Gemfileに以下を追加します。
gem 'webpacker'
記述したら
$ docker-compose run web rails webpacker:install
を実行
自分の場合、Gemfileの記述を
gem 'webpacker', github: 'rails/webpacker'
とするとyarnエラーが出てインストールができませんでした。
インストールが完了したらいろいろRailsのプロジェクトにファイルが追加されると思います。
次にVueをインストールしていきます。
$docker-compose run web rails webpacker:install:vue
これでVue.jsの導入が完了しました。
##vue.jsファイルのビルド
次にVue.js関連のコンポーネントをJavascriptにコンパイルするため
$ docker-compose run web bin/webpack
コマンドを実行します。
RailsのViewsファイルに
<%=javascript_pack_tag 'hello_vue'%>と記述し問題なく表示されていれば成功です!
参考
dockerでrails+vueの環境を作ったので解説
Rails5.2 + Docker環境にVue.js (Webpacker) を導入する