目次

02.windows10にdockerでrails7環境構築

Ruby on Rails トップページ

リンク

https://i-doctor.sakura.ne.jp/font/?p=47014
Docker Desktop for Windowsを試してみる(3)Windows10でWindowsとwsl2間でのファイルのコピー
2022年1月28日

https://zenn.dev/kino_puehddby/articles/21a3cf0aacee7c
【Rails7】DockerでRuby on Railsアプリを構築してHerokuにデプロイするまで

https://qiita.com/FUSe_wadthee/items/50d772cfaf9dbb767578
@FUSe_wadthee
更新日 2022年03月15日
ええ!?Getting Started with Rails(7)で詰まるなんてあっていいんですか!

https://zenn.dev/mingos/articles/c4b4fce7e5368f
DockerでRails6+PostgreSQLの開発環境を構築する
2022/04/08に公開

https://mseeeen.msen.jp/rails-docker/
Docker 上で Ruby on Rails 7 の開発環境を構築してみた
2022.06.15

https://qiita.com/normalsalt/items/8bf6c5010c9e9f127582
@normalsalt
更新日 2022年03月04日
Ruby on Rails 7 with Bootstrap on Docker Compose 開発環境を簡単に構築する方法

https://zenn.dev/dragonarrow/articles/48e4257c5fcbe7
Rails7 のステージング環境(Docker)を楽々に作成してSSL化する
2022/09/04

今回構築した環境で再開するときはdocker-compose up -d

docker-compose downでDockerコンテナを止めて、パソコンを終了した後、パソコンを再起動したら、

  1. Windows Docker Desktopを起動
  2. WSL2のUbuntuを起動
  3. cd rails7 && code .
  4. VisualStudioCodeが開くので、Ctrl+@でターミナル画面を出す
  5. docker-compose up -d
  6. WEBブラウザで、localhost:3000/ を開く

とします。なお、rails g scaffold などをしたい場合は、

docker-compose exec web bash

で、webコンテナに入ってから実行します。webコンテナのbashから出るときは、

exit

で出ます。

新しいファイルを作成したような場合は、WSL2で以下のコマンドを入力する必要があることがあります。

sudo chown -R $USER:$USER .

Gemfileを更新したとき

docker-compose run web bundle install
docker-compose down
docker-compose up --build -d

イメージをビルドしなおすので時間はかかる。

https://teratail.com/questions/373578
DockerコンテナでRailsでアプリを作りたい。docker-composeで出るエラー
PolymetisOutis7
投稿2021/12/13 15:45

https://qiita.com/gyu_outputs/items/1cc1903db802daf0fdbc
@gyu_outputs
投稿日 2020年03月31日
更新日 2020年06月07日
dockerでGemfile(gem追加)更新したら後、データベースが消えた、gemが反映しない

Dockerイメージを持ち運びたいとき

https://blog.amedama.jp/entry/2017/11/01/204637
2017-11-01
Docker イメージをファイルでやり取りする
基本的に Docker イメージ

突然Dockerがアンインストールされたり、docker-composeが使えなくなってしまったら

https://qiita.com/lukapla/items/c4f1029cc18e7ee99951
@lukapla
投稿日 2020年05月31日
Ubuntu 20.04でapt install docker-composeでインストールしたらバージョンが古くてエラーが発生

https://qiita.com/suaaa7/items/744f58319c04d9b6bfbe#7-docker-compose%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
@suaaa7
投稿日 2019年08月25日
WSL2でdocker-composeを使えるようにするまで

見出し

https://qiita.com/kodai_0122/items/67c6d390f18698950440
@kodai_0122
更新日 2019年11月18日
Rails6の本番環境でBlocked hostエラーが発生したときの対処法

config/environments/development.rb

production.rb ?

見出し

Windows10で、Windows Docker Desktopを用いてRails7+PostgreSQLの開発環境を構築する方法を以下に記載しましたので、もしよろしければリンク先をご覧ください。

https://i-doctor.sakura.ne.jp/font/?p=46757
Docker Desktop for Windowsを試してみる(1)WSL2とWindows Desktopのインストール
2021年9月21日

https://i-doctor.sakura.ne.jp/font/?p=46947
Docker Desktop for Windowsを試してみる(2)Swiftコンテナを作成してSwiftを動かしてみる
2021年9月18日

https://i-doctor.sakura.ne.jp/font/?p=47014
Docker Desktop for Windowsを試してみる(3)Windows10でWindowsとwsl2間でのファイルのコピー
2021年9月18日

https://i-doctor.sakura.ne.jp/font/?p=47130
Docker Desktop for Windowsを試してみる(4)Windows10+WSL2+DockerDesktopでJupyterLab環境構築してみる
2021年9月18日

https://i-doctor.sakura.ne.jp/font/?p=48081
Docker Desktop for Windowsを試してみる(5)Windows10+WSL2+DockerDesktopでWordPressを環境構築してみる
2022年1月16日2022年1月17日

https://i-doctor.sakura.ne.jp/font/?p=48078
Docker Desktop for Windowsを試してみる(6)Windows10+WSL2+DockerDesktopでRuby on Rails7+PostgreSQLを環境構築してみる【2022年1月時点】
2022年1月17日

開発環境

Windows 10 Pro 21H1
Hyper-Vを有効化
Windows Docker Desktop 4.0.0
VisualStudioCode (wsl用の拡張機能インストール済み)

WSL2 Ubuntu 20.04 LTS
VisualStudioCode (+拡張機能 )

『Wndows Docker Desktop』+『WSL2のUbuntu』+VSCodeのセットアップについては「Docker for Windowsを試してみる(1)WSL2とWindows Desktopのインストール」をご参照ください。

Windows10 + WSL2 Ubuntu + Docker desktopにRail7 + Postgre環境を構築

webコンテナ(Dockerfileから作成したイメージから作成)とdbコンテナをdocker-composeでupします。

  1. WindowsのスタートボタンからDocker Desktopを起動
  2. WSL2を起動し、VisualStudioCodeを起動
mkdir rais7
cd rails7
code .
  1. Dockerfileを元にしてwebコンテナ用のイメージ(設計図)を作成
docker-compose run --no-deps web rails new . --force --database=postgresql
ls -l
docker-compose build
sudo chown -R $USER:$USER .
  1. データベースとしてpostgresqlを用いるためにconfig/database.ymlを書き換えて、Ctrl+S で保存
  2. docker-compose upでwebコンテナ(上で作ったイメージを元に作成)と、dbコンテナ(DockerHubにあるイメージimage: postgresを元に作成)を作成し、連携
  3. rake:db createでデータベースを作成
  4. WindowsのWebブラウザで、localhost:3000にアクセス
docker-compose up -d
docker-compose run web rake db:create

http://localhost:3000

Dockerを止めるとき(アプリを止めるとき)

docker-compose down

一度作成したコンテナを再度起動するとき

  1. WindowsのスタートボタンからDocker Desktopを起動
  2. WSL2を起動し、VisualStudioCodeを起動 cd rails7 && code .
  3. “Ctrl+@“でターミナル画面を起動して、docker-compose up -d
  4. なお、webコンテナに入りたいとき(rails scaffoldなど使いたいとき)は、以下のコマンド(WSL2に戻るときは、exit)
docker-compose exec web bash

Windows10 docker rails

https://guides.rubyonrails.org/getting_started.html
Getting Started with Rails
→Rails6のインストールには以下が必要

  1. Ruby
  2. SQLite3 (開発環境でsqliteを使用する場合)
  3. Node.js (Rails7ではとりあえず不要)
  4. Yarn   (Rails7ではとりあえず不要)

Ruby 3.1 on Rails 7

  1. Dockerfile
  2. Gemfile
  3. Gemfile.lock
  4. entrypoint.sh
  5. docker-compose.yml

流れ

  1. 目標は、webコンテナ(Railsの入ったコンテナ)と、dbコンテナ(PostgreSQLの入ったコンテナ)を作成し、連携すること
  2. 5つのファイルを作成
  3. Dockerfileを元にしてwebコンテナ用のイメージ(設計図)を作成
  4. ただし、webコンテナを作成するときに、毎回、「Rails に対応したファイル server.pid が存在しているかもしれないので削除する。」ために、entrypoint.shを実行するようにしておく
  5. Gemfile, Dockerfileを修正したら、毎回、docker-compose build
  6. データベースとしてpostgresqlを用いるためにconfig/database.ymlを書き換える
  7. docker-compose upでwebコンテナ(上で作ったイメージを元に作成)と、dbコンテナ(DockerHubにあるイメージimage: postgresを元に作成)を作成し、連携 、docker-compose up
  8. railsのデータベースを作成するため(?)にdocker-compose run web rake db:create
  9. ブラウザでlocalhost:3000を開く
  10. アプリを止めるときはdocker-compose down
  11. アプリを再開するときはdocker-compose up
  12. Gemfile や Compose ファイルを編集したときは、以下のように再ビルドが必要。
docker-compose run web bundle install
docker-compose up --build

https://matsuand.github.io/docs.docker.jp.onthefly/samples/rails/

Dockerfile

# https://matsuand.github.io/docs.docker.jp.onthefly/samples/rails/

# Ruby 3.1 on Rails 7
FROM ruby:3.1.0
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle 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"]

Gemfile

source 'https://rubygems.org'
gem 'rails', '~>7'

Gemfile.lock
→何も記載しない

entrypoint.sh

#!/bin/bash
set -e

# Rails に対応したファイル server.pid が存在しているかもしれないので削除する。
rm -f /myapp/tmp/pids/server.pid

# コンテナーのプロセスを実行する。(Dockerfile 内の CMD に設定されているもの。)
exec "$@"

docker-compose.yml

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-compose run --no-deps web rails new . --force --database=postgresql

ls -l

# Gemfile, Dockerfileを修正したら、毎回、以下が必要
docker-compose build

config/database.yml を以下のように書き換える

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

development:
  <<: *default
  database: myapp_development


test:
  <<: *default
  database: myapp_test

以下を実行

docker-compose up

docker-compose run web rake db:create

http://localhost:3000 にアクセスすると、うまくいくと、画面が表示される。

Dockerを止めるとき(アプリを止めるとき)

docker-compose down

アプリを再び起動するとき

docker-compose up

Gemfile や Composeファイルを編集したときは、以下のように再ビルドが必要。

docker-compose run web bundle install
docker-compose up --build

Dockerで構築したRailsではrailsコマンドを用いる場合はdocker-compose execしてコンテナに入ってから行う

https://alterbo.jp/blog/ryu3-2106/
Docker+MySQL+Railsの開発環境を作る
2021.06.21

docker-compose exec web bash

docker-compose execは

docker-compose exec コンテナ名 実行コマンド

で実行。 コンテナ名(web)はdocker-compose.ymlの「services:」の後に定義したもの。

https://smot93516.hatenablog.jp/entry/2019/05/22/161921
2019-05-22
【Rails】docker-composeでrails generateが使えず、Could not find rake ~~~~になる

https://zenn.dev/endo/articles/42309bdddc4fe0fabfd6
Rails】主要コマンドまとめ
2021.01.17

開発環境でのデータベースをsqlite3を用いる場合

Dockerfile

# Ruby 3.1 on Rails 7
FROM ruby:3.1.0
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client sqlite3
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle 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"]

https://self-development.info/ubuntu-20-04-lts%E3%81%ABsqlite%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/
Ubuntu 20.04 LTSにSQLiteをインストールする

Gemfile

source 'https://rubygems.org'
gem 'rails', '~>7'

database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test
  
production:
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5
  url: <%= ENV['DATABASE_URL'] %>
docker-compose run --no-deps web rails new .

見出し

https://qiita.com/na-777/items/fcccb48b4f3b549abe61
@na-777(株式会社イーリバースドットコム)
更新日 2021年09月22日
Windows10のWSL2(Ubuntu)でDockerを使ったRails環境構築

https://zenn.dev/az/articles/6e2a421f7a32446d827f
超丁寧なrails6 + MySQL on Dockerの環境構築
2020.11.21

https://zenn.dev/nakazawaken1/articles/0f5515cde2ddf3
Ruby 3.1 と Rails 7 のプロジェクトを Docker内で作成してみる
2022.01.14

https://qiita.com/shizen-shin/items/659880ca1c471b005eb0
@shizen-shin
更新日 2022年01月03日
【Rails6】Docker上にRailsアプリの開発環境を構築しCRUD操作する手順

https://docs.docker.jp/compose/rails.html
クィックスタート: Compose と Rails

https://matsuand.github.io/docs.docker.jp.onthefly/samples/rails/
クィックスタート: Compose と Rails

https://qiita.com/kodai_0122/items/795438d738386c2c1966
@kodai_0122
更新日 2020年02月27日
DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】

https://leez.info/archives/5023
Windows10 + Docker環境でRuby on Railsの環境を作る方法
2021年5月25日

https://zenn.dev/tmasuyama1114/articles/rails-docker-6x-how-to
Ruby on Railsの開発環境をDockerで構築する方法(Rails 6.x)
2021.03.30に公開

https://alterbo.jp/blog/ryu3-2106/
Docker+MySQL+Railsの開発環境を作る
2021.06.21

https://prograshi.com/framework/rails/rails6-on-docker/
【Rails6】Docker上にRailsアプリの開発環境を構築しCRUD操作する手順
2022.1.3

https://michinoku-se.org/docker-rails/
DockerでRailsローカル開発環境を爆速構築
更新日:2021-03-17

Windows10 docker wordpress

https://eeedotweb.com/blog/docker-local-wordpress/
【初心者向け】DockerでWordPressローカル開発環境を作成する方法(Mac用)
WordPress
2021.05.17

  1. MySQL 5.7

https://docs.docker.com/samples/wordpress/
Quickstart: Compose and WordPress

rails7

https://qiita.com/jnchito/items/5c41a7031404c313da1f#devise%E3%81%8Cturbo%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84
@jnchito
更新日 2022年04月20日
Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ

https://zenn.dev/kenzan100/articles/0f9b100655a4bf
Rails7がもつフロントエンドへの「答え」
2021.09.17

https://www.publickey1.jp/blog/22/ruby_31rails_701ruby_31_on_rails_7.html
Ruby 3.1に対応したRails 7.0.1がリリース。「Ruby 3.1 on Rails 7」が実現
2022年1月11日

https://qiita.com/jnchito/items/5c41a7031404c313da1f
@jnchito
更新日 2022年01月28日
Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ

Docker

https://zenn.dev/o2z/articles/zenn-20210622_wsl_directory
エクスプローラでWSL2(ubuntu)のディレクトリを開く方法
2021年8月7日

https://snowsystem.net/container/docker/docker-wsl-dev-env-react/
Reactの開発環境(WSL2+docker)構築から本番環境(DockerHub+kubernetes)へのデプロイ手順まとめ
2021年1月3日

https://qiita.com/zembutsu/items/24558f9d0d254e33088f

@zembutsu(さくらインターネット株式会社)
更新日 2021年11月21日
Organization
Dockerイメージの理解を目指すチュートリアル

見出し

Ruby on Rails トップページ