1
2

More than 1 year has passed since last update.

Cloud9,Rails6,Mysql,Dockerで環境構築(2023/04)

Last updated at Posted at 2023-06-10

はじめに

  • Cloud9環境下でRails6×Dockerの環境構築を試みるもまとまった生地がなく苦労したため執筆(自分用)。
  • 複数の情報源からかき集めた手順、エラー対処等の組み合わせのため、不要な記述等がある可能性が高いです
  • プログラミング学習2か月目の初心者です。誤りなどありましたらお教えいただけると幸いです。

参考

環境

  • Ruby 3.1.2

手順

※Docker,Docker-composeがインストールされている状態で始めます

1. 必要ファイルの作成
新規にディレクトリを作成して、cdで移動。ターミナルに

$ touch Dockerfile
$ touch docker-compose.yml
$ touch Gemfile
$ touch Gemfile.lock

でファイルを作成する。

2. Dockerfileの記述
※webpackerを利用するためにyarn,npmが必要。以下のように記述するとインストールされる。あとから$ docker-compose run web yarn installを実行してもエラーを吐くのでこの段階で記述する必要あり。
Nodeのバージョンが高すぎることでエラーになる場合もあるため、動作確認できているバージョンを指定します。

Dockerfile
FROM ruby:3.1.2
RUN apt-get update -qq && apt-get install -y postgresql-client

RUN mkdir /myapp
WORKDIR /myapp

RUN apt-get install -y nodejs npm && npm install n -g && n 16.19.1
RUN npm install --global yarn

COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock

RUN bundle install
COPY . /myapp


3. docker-compose.ymlの記述

docker-compose.yml
version: '3'

services:
    db:
        image: mysql:5.7
        environment:
            MYSQL_ROOT_PASSWORD: password
            POSTGRES_HOST_AUTH_METHOD: 'trust'
        ports:
            - "3306:3306"
        volumes:
            - ./db/mysql/volumes:/var/lib/mysql

    web:
        build: .
        command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 8080 -b '0.0.0.0'"
        volumes:
            - .:/myapp
            - gem_data:/usr/local/bundle
        ports:
            - 8080:8080
        depends_on:
            - db 
        tty: true
        stdin_open: true

volumes:
  gem_data:

Cloud9用のポート指定と、MySQLのパスワード周りで発生するエラーに対応する記述をしてあります。


4. Gemfileの記述

Gemfile
source 'https://rubygems.org'
gem 'rails', '6.1.7.3' #適したバージョンを指定

5. Gemfile.lockの記述
こちらは何もかかなくてOK。

6.アプリケーション作成

$ docker-compose run web rails new . --force --database=mysql --skip-bundle

これで初めに作ったディレクトリ配下にRailsアプリケーションのひな型が作成されます。

7.編集権限設定

$ sudo chown -R $USER /home/ec2-user/environment/myapp
#対象のフォルダは自分の環境に合わせてください

編集権限がなくファイルに記述を加えられないことがあるので、上記のコマンドで事前に解消します。


8./config/database.ymlに記述

database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db

MySQLの設定をしています。先ほどdocker-compose.ymlで記述した値に合わせます。
権限系の警告が出てしまう場合は以下の記事を参考に権限設定を変更してみます。
https://qiita.com/hello_sk/items/803d0f0c97b7c4d19403


9.config/environments/development.rbに記述

deveropment.rb
Rails.application.configure do
 #省略
 config.hosts.clear
end

一番下の行に追記します。

10.起動前の設定、→ビルド

$ docker-compose run web bundle install
$ docker-compose run web rails webpacker:install
$ docker-compose build

ブラウザにNoDatabaseErrorが表示されたらOK。

11.データベースの作成
新たにターミナルを立ち上げて、以下を実行。

$ docker-compose run web rails db:create

12. 起動

$ docker-compose up

Railsのトップページが表示されていれば成功です。

1
2
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
1
2