今回やりたいこと
!!!注意!!!
ローカルで動かしてみて今のところ問題が出ていないだけで足りない部分もあるかもしれません。かなり最低限しか書いていないと思うので
動かしていく中で追加や修正が必要そうな部分があり次第適宜修正しますが、間違っている点などありましたら、お手数ですがコメント等でそっと教えてていただけたらと思います
私の環境
Macbook OS: Monterey 12.6.1
Docker: 20.10.21
Docker Compose: 2.12.2
前準備
- GitHubで管理したいのでGitHubのサイトからリポジトリを作成
- ローカルにリポジトリをクローン(自分の場合はGithub Desktopを使用しました)
- ここまででGitHubでの管理の準備が完了
DockerでRailsの立ち上げまで
1. コンソールでクローンしてきたリポジトリまで移動
2. 立ち上げに必要なファイルを作成
コンソールでファイル作成のコマンドを実行
$ touch {docker-compose.yml,Dockerfile,Gemfile,Gemfile.lock}
※ ちなみに、ファイルの間にスペース空けるとエラーになるので注意
3. Dockerfileの作成
# まずベース・イメージを指定 FROM ruby:3.1 # mysqlのためにdefault-mysql-clientをインストール RUN apt-get update && apt-get install -y default-mysql-client # 作業ディレクトリの作成&指定 WORKDIR /app # GemfileとGemfile.lockを作業ディレクトリにコピー COPY Gemfile Gemfile.lock /app # gemのインストール RUN bundle install # カレントディレクトリのファイルを作業ディレクトリにコピー COPY . /app # Rails起動コマンド CMD ["rails", "server", "-b", "0.0.0.0"]
ちなみに
ちなみにdefault-mysql-client
を無しにするとdocker exec -it rails_app bin/rails dbconsole
を行った際に以下のエラーが出ました
Couldn't find database client: mysql, mysql5. Check your $PATH and try again.
4. Gemfileの作成
今回はRails 7.0.4を使用するので、そのバージョンを指定
source 'https://rubygems.org' gem 'rails', '7.0.4'
5. docker-compose.ymlの作成
version: '3' services: db: # コンテナ名は任意で container_name: rails_app_db # 使いたいmysqlのバージョンを指定。今回は8.0を使用 image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "3306:3306" volumes: - ./tmp/db:/var/lib/mysql app: # コンテナ名は任意で container_name: rails_app build: . command: bash -c "bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/app ports: - "3000:3000" depends_on: - db
6. Railsプロジェクトの立ち上げ
コンソールでRailsの立ち上げとdocker-composeのビルドのコマンドを実行
$ docker-compose run app rails new . --force --no-deps --database=mysql $ docker-compose build
--force
既存のGemfileを上書き
--no-deps
リンクしたサービスを起動しない
--database=mysql
DBにmysqlを指定
7. config/database.ymlにDBの設定を追加
・・・省略 development: <<: *default database: app_development # ここから host: db username: root password: password # ここまで ・・・省略 test: <<: *default database: app_test # ここから host: db username: root password: password # ここまで ・・・省略
8. DBの作成
コンソールでDB作成のコマンドを実行
$ docker-compose run app rails db:create
9. Dockerイメージの起動
コンソールでdocker composeを立ち上げる
$ docker-compose up
11. 無事作成完了
ブラウザでhttp://localhost:3000/にアクセス
参考ページ
- https://railsguides.jp/7_0_release_notes.html
- https://www.ruby-lang.org/ja/downloads/
- https://rubygems.org/gems/rails/versions
- https://docs.docker.jp/compose/rails.html
- https://qiita.com/croquette0212/items/7b99d9339fd773ddf20b
- https://qiita.com/madai0517/items/417063f924c0dfc27f3a
- https://qiita.com/kodai_0122/items/795438d738386c2c1966
最後に
ローカルでRailsアプリの立ち上げまで完了しました
次は、勉強がてら稼働時間を管理するWebアプリを作ってみる予定です!