DockerでRubyonRailsの作成
はじめに
毎回毎回Dockerで調べながら、railsの環境を用意して
簡単にmocやらテストアプリを作成するんだけど
同じことやってるだけなのに調べて作るのに時間かかりすぎて
簡単に上からやればできるよってのが欲しかった
最終的にスクリプトかなんかにして叩けばできるようにしておきたい
何が必要か
作成ファイル
Dockerfile docker-compose.yml Gemfile Gemfile.lock
上記4つは必須
一括作成のコマンドは以下
touch Dockerfile docker-compose.yml Gemfile Gemfile.lock
設定ファイルを編集する前に
いろいろ選定が必要な為記述
ruby&rails
なんかどっかのサイトでこれとこれが安定してるとか このバージョンとこのバージョンねとか 今よく使われてるのはこれとこれねとか 簡単に見れた気がしたんだけど紛失
DB
リリースノートとか見てあれがいいとかこれじゃなきゃだめだとか そういうのあると思うけど 僕みたいな底辺エンジニアには選定がよくわからん mysqlなら5.6.x系とかを雰囲気でつかっている posgreなら9.6とか?最新でいいかもしれんけど 基本的に最新のを使って行きたいけど 他ツールとかの兼ね合いで難しくなることも多い
マイクロサービスならmysql 多少長く運用するつもりならposgre 他のDBは資金によって選択かなぁ そりゃoracleとかバシバシ使ってみたいっちゃみたいけど 高すぎて個人サービスとかで選択する利点ないよね
PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較! - エンジニアHub|若手Webエンジニアのキャリアを考える!
dockerfile
FROM ruby:2.6.3 ENV TZ Asia/Tokyo 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 # 作成場所のディレクトリtmpでインストールが早くなるらしい 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
docker-compose
version: '3' 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:
api作成時とかで違う
Gemfile
source 'https://rubygems.org' gem 'rails', '5.1.4'
おいおい追記
プロジェクトの作成
docker-compose run web bundle exec rails new . --force --database=mysql --skip-bundle