−目次
07.Windows10にDockerでRails5環境構築
Ruby on Railsチュートリアル 5.1をやりたい。
https://railstutorial.jp/chapters/beginning?version=5.1
2022年1月時点
以下に記載しました
https://i-doctor.sakura.ne.jp/font/?p=48294
Docker Desktop for Windowsを試してみる(8)Railsチュートリアル第4版(Rails5.1)の環境構築【2022年1月時点】
2022年1月28日
開発環境
『Wndows Docker Desktop』+『WSL2のUbuntu』+VSCodeのセットアップについては「Docker for Windowsを試してみる(1)WSL2とWindows Desktopのインストール」をご参照ください。
Windows10 + WSL2 Ubuntu + Docker desktopにRails5.1.6 + Postgre環境を構築
version: "3.9" | |
services: | |
db: | |
image: postgres | |
volumes: | |
- ./tmp/db:/var/lib/postgresql/data | |
environment: | |
POSTGRES_PASSWORD: password | |
web: | |
build: . | |
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" | |
volumes: | |
- .:/myapp | |
ports: | |
- "3000:3000" | |
depends_on: | |
- db |
# Docker Ruby 2.5 on Rails 5.1.6 | |
FROM ruby:2.5 | |
# Rails6ではnodejsとyarnはwebpackをインストールする際に必要 | |
# yarnパッケージ管理ツールをインストール | |
RUN 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 | |
RUN apt-get update -qq && apt-get install -y nodejs build-essential libpq-dev postgresql-client yarn | |
WORKDIR /myapp | |
COPY Gemfile /myapp/Gemfile | |
COPY Gemfile.lock /myapp/Gemfile.lock | |
RUN bundle install | |
RUN yarn install --check-files | |
RUN bundle exec rails webpacker:install | |
# コンテナー起動時に毎回実行されるスクリプトを追加 | |
COPY entrypoint.sh /usr/bin/ | |
RUN chmod +x /usr/bin/entrypoint.sh | |
ENTRYPOINT ["entrypoint.sh"] | |
EXPOSE 3000 | |
# イメージ実行時に起動させる主プロセスを設定 | |
CMD ["rails", "server", "-b", "0.0.0.0"] |
#!/bin/bash | |
set -e | |
# Rails に対応したファイル server.pid が存在しているかもしれないので削除する。 | |
rm -f /myapp/tmp/pids/server.pid | |
# コンテナーのプロセスを実行する。(Dockerfile 内の CMD に設定されているもの。) | |
exec "$@" |
source 'https://rubygems.org' | |
gem 'rails', '5.1.6' |
webコンテナ(Dockerfileから作成したイメージから作成)とdbコンテナをdocker-composeでupします。
- WindowsのスタートボタンからDocker Desktopを起動
- WSL2を起動し、VisualStudioCodeを起動
mkdir rais5 cd rails5 code .
- Dockerfileを元にしてwebコンテナ用のイメージ(設計図)を作成
docker-compose run --no-deps web rails new . --force --database=postgresql ls -l docker-compose build sudo chown -R $USER:$USER .
- データベースとしてpostgresqlを用いるためにconfig/database.ymlを書き換えて、Ctrl+S で保存
- docker-compose upでwebコンテナ(上で作ったイメージを元に作成)と、dbコンテナ(DockerHubにあるイメージimage: postgresを元に作成)を作成し、連携
- rake:db createでデータベースを作成
- WindowsのWebブラウザで、localhost:3000にアクセス
docker-compose up -d docker-compose run web rake db:create
Dockerを止めるとき(アプリを止めるとき)
docker-compose down
Rails5.1 チュートリアル用
Gemfileに追加
gem 'jquery-rails'
Gemfileを更新したら、以下を実行。Dockerイメージをビルドしなおす必要あり。時間がかかる。
docker-compose run web bundle install docker-compose down docker-compose up --build -d
docker-compose up –build しない(docker-compose up -dだけ実行)と、Dockerのwebコンテナが起動してもすぐに自動的にストップしてしまい、Railsを動かすことができない。
(Gemfileにjquery-railsを入れると、Railsが動かない。わけではなかった。)
https://qiita.com/Masa9/items/cc36f9223e6ce1f0a8a9
@Masa9
更新日 2021年03月02日
dockerでgemを追加したときにbundle installではなくbuildする
https://teratail.com/questions/302733
【Rails】Gemfileを追加してDockerを再起動したらlocalhostに接続できなくなった
_chii
投稿2020/11/06 22:43
第3章
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-static_pages
docker-compose exec web run rails:db create
見出し