0
0

最速でRailsアプリケーションをDockerコンテナ上で動かす

Posted at

経緯

  • 仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん | 小笠原種高 |本 | 通販 | Amazonを読んだのでアウトプットとして勉強中のRailsアプリの環境をDockerコンテナ上で作ってみようと思いました。
  • 今から書く内容は、Dockerコンテナ上で動くRailsアプリケーションを配布(Github)できるようになるまでの流れを最速でやってみようと言うものです。(最速というか、最短の方が近いかもです)
  • というのも、Githubで公開してるrailsのコードを実際に実行したいとなった時、開発環境でつまづくと本末転倒になってしまうのでは、だったらdocker使って親切に開発環境まで配布できたら親切なのでは?と思ったのがきっかけです。

ですが、、、いまだ勉強中で、Docker習いたてのほやほやなので温かい目で見ていただけたら嬉しいです😀

  • では、本題に入っていきます。

早速作ってみよう

Railsアプリケーションの作成

  • フォルダ作成
mkdir sampleapp_on_docker
cd sampleapp_on_docker
  • プロジェクト作成
rails new sampleappondocker
cd sampleappondocker
  • CRUD画面作成
rails generate scaffold article title:string content:string
  • マイグレーション
rails db:migrate
  • サーバー起動
rails s

Dockerfile docker-compose.ymlの作成

  • Dockerfile
FROM ruby:3.2.2

RUN mkdir /sampleapp
WORKDIR /sampleapp
COPY Gemfile /sampleapp/Gemfile
COPY Gemfile.lock /sampleapp/Gemfile.lock

RUN gem update --system
RUN bundle update --bundler

RUN bundle install

CMD ["rails", "server", "-b", "0.0.0.0"]

すでにDockerfile(production用)があるので、それの名前は他の名前(Dockerfile.prod)に変更しておきます)

  • docker-compose.yml
version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/sampleapp
      - ./db:/sampleapp/db
    environment:
      - RAILS_ENV=development
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails db:migrate && bundle exec rails s -p 3000 -b '0.0.0.0'"
  • コンテナ起動
docker-compose up
docker-compose down

Dockerfileとdocker-compose.ymlファイルはsampleappondocker配下においてください。

  • ここまでできたら、Githubに保存して完了となります。
  • これで、Rails環境がないマシンでも、Githubからクローンしてdocker-compose upすれば、localhost:3000で確認できます。(そのはず。。。)

最後に

実際のGithubURLを貼っておきますのでぜひお試しください。↓
yasaigaoisi/sampleapp_on_docker
今後やってみたいこととしては、今回は、物理マシンにもRails環境がある前提で実装していたので、Dockerコンテナ内で完結できるようにしたいです。(多分、バインドマウントとかちゃんと理解できてないので、ローカル上でプロジェクト作成とかやってました。そこが、Dockerコンテナ上でできれば、上手くいく。。。はず。。。なんかできそうな気がしてきましたね😃)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0