LoginSignup
0
0

More than 3 years have passed since last update.

[まとめ]DockerでRailsを扱う

Posted at

1.プロジェクトの作成

1-1.Dockerfileの作成
1-2.docker-compose.ymlの作成

1-1.Dockerfileの作成

FROM ruby:2.5.3-stretch

RUN gem install rails

RUN apt-get update && \
    apt-get install -y nodejs mysql-client

COPY Gemfile /Gemfile
COPY Gemfile.lock /Gemfile.lock
RUN bundle install

1-2.docker-compose.ymlの作成

docker-compose.yml
version: '3'
services:
  mysql:
    image: mysql:8.0.13
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - "./mysql-data:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: root
  app:
    build: .
    volumes:
      - ".:/app"
    ports:
      - "3000:3000"
    tty: true
    depends_on:
      - mysql
    working_dir: "/app"
ターミナル
$ docker-compose up --build
ターミナル
#appはdocker-compose.ymlで定義したコンテナ名
$ docker-compose exec app /bin/bash

2.Railsを立ち上げる

appディレクトリに入って

$ rails new .

するとrailsのファイルがインストールされる。

3.MySQLの導入

・Gemfileのsqliteをmysql2に書き換えてbundle installする

・config/database.ymlを書き換え

config/database.yml
default: &default
  adapter: mysql2
  encording: utf8
  username: root
  password: root
  host: mysql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
#アプリの名前に合わせてpracのところを変更して下さい。
  database: prac_development

test:
  <<: *default
#アプリの名前に合わせてpracのところを変更して下さい。
  database: prac_test

production:
  <<: *default
#アプリの名前に合わせてpracのところを変更して下さい。
  database: prac_production

その後データベースを作成するために

$ rails db:create

データベースが出来たか確認。
database.ymlでpasswordやhostを設定したので以下のようなコマンドになってます。

$ mysql -u root -proot -h mysql
$ show databases;
#以下でサーバー起動
$ rails s -b 0.0.0.0

補足

サーバーを一度落とすと以下のようになってサーバーが開かなくなるのが今の問題です

A server is already running. Check /app/tmp/pids/server.pid.
Exiting
0
0
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
0
0