ふるすたっくえんじにあの日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWSあたり

Docker環境構築(Rails)②

devdevdev.hatenablog.com
基礎編はこちら

前回作ったコンテナ上にrailsの実行環境を作っていきますよー
ホスト側は一切汚しません。

とりあえずね
$ docker-compose run app bundle init
$ docker-compose run app touch Gemfile.lock

app/Gemfileが生成されるよ

Gemfileを編集

デフォルトはこう

# frozen_string_literal: true
  
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"

最後の行を以下のように書き換えます

gem 'rails', '5.1.4'



docker-compose.ymlの編集

appの下に以下を追記

    environment:
      RAILS_ENV: development

app / volumesの下に以下を追記

      - bundle:/usr/local/bundle

appの一番下に以下を追記

    command: /bin/sh -c 'mkdir -p tmp/sockets/ && bundle exec puma -C config/puma.rb'

一番下に以下を追記

volumes:
  bundle:



Dockerfileの編集

docker/app/Dockerfileに以下を追記

RUN apt-get update && apt-get install -y nodejs

ADD ./app/Gemfile* $APP_ROOT/
RUN bundle install

ビルド

$ docker-compose build



railsアプリケーション作成

appにsshではいる

$ docker-compose run app bash

普通に作る

$ rails new . -d mysql

Gemfileを上書きしていいか聞かれるので「Y」

app/config/database.yml書き換え

development:
  password: password

app/config/puma.rbに以下を追記

app_root = File.expand_path("../..", __FILE__)
bind "unix://#{app_root}/tmp/sockets/puma.sock"

ビルドして起動

$ docker-compose build
$ docker-compose up

http://localhost/にアクセスしてrailsの画面が表示されればおk。