経緯
- 仕組みと使い方がわかる 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
- localhost:3000にアクセスして動作確認
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
- localhost:3000にアクセスして動作確認
- コンテナ停止
docker-compose down
Dockerfileとdocker-compose.ymlファイルはsampleappondocker配下においてください。
- ここまでできたら、Githubに保存して完了となります。
- これで、Rails環境がないマシンでも、Githubからクローンして
docker-compose up
すれば、localhost:3000で確認できます。(そのはず。。。)
最後に
実際のGithubURLを貼っておきますのでぜひお試しください。↓
yasaigaoisi/sampleapp_on_docker
今後やってみたいこととしては、今回は、物理マシンにもRails環境がある前提で実装していたので、Dockerコンテナ内で完結できるようにしたいです。(多分、バインドマウントとかちゃんと理解できてないので、ローカル上でプロジェクト作成とかやってました。そこが、Dockerコンテナ上でできれば、上手くいく。。。はず。。。なんかできそうな気がしてきましたね😃)