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