DockerでのRuby on Rails version6 APIモード・MySQLをDBに使用してのバックエンド環境を構築しましたので記録しておきます。
見出し
アプリディレクトリ作成
※今回はmangaディレクトリとしています。
1 |
mkdir manga |
ファイル作成
1 |
touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,my.cnf} |
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
FROM ruby:2.6.5 # 必要なパッケージのインストール(Rails6からWebpackerがいるので、yarnをインストールする) RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y build-essential libpq-dev nodejs yarn # 作業ディレクトリの作成 RUN mkdir /manga WORKDIR /manga # ホスト側(ローカル)(左側)のGemfileを、コンテナ側(右側)のGemfileへ追加 ADD ./Gemfile /manga/Gemfile ADD ./Gemfile.lock /manga/Gemfile.lock # Gemfileのbundle install RUN bundle install ADD . /manga |
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
version: '3' services: db: image: mysql:5.7 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci volumes: - ./data:/var/lib/mysql - ./my.cnf:/etc/mysql/conf.d/my.cnf environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "3306:3306" web: build: . command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3001 -b '0.0.0.0'" tty: true stdin_open: true depends_on: - db ports: - "3001:3001" volumes: - .:/manga |
my.cnf
1 2 3 4 5 6 |
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 |
Gemfile
1 2 3 |
source 'https://rubygems.org' gem 'rails', '~> 6.0.3' |
rails new
1 |
docker-compose run web rails new . --force --database=mysql --skip-bundle --api --webpacker |
config/database.yml
1 2 3 4 5 6 7 |
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password # docker-compose.ymlの MYSQL_ROOT_PASSWORD host: db # docker-compose.ymlの service名 |
Docker起動
1 2 |
docker-compose build docker-compose up -d |
DB
1 2 3 |
docker exec -it <web container id> bash rails db:create rails db:migrate |
ブラウザ確認
1 2 3 |
http://localhost:3001 または http://0.0.0.0:3001 |
以上です
この手順でやれば自分の環境では他のエラー等はありませんでした。
参考サイト
こちらを参照させていただきました。もしうまくいかなかった場合はこちらも見ていただければと思います。
https://qiita.com/kurawo___D/items/53035a502f44d3b0835f
上の記事だけだとMySQL文字化けしたので、今回の記事では以下の記事の設定もマージしています。