プログラミング備忘録

プログラミングメモ

Docker Ruby・Rails

【Docker】Rails6 × MySQL8で環境構築 Windows版

Docker rails6

準備

以下のファイルを同じフォルダ内に作成してください。

  • Dockerfile
  • docker-compose.yml
  • Gemfile
  • Gemfile.lock

 

 

Dockerfile


FROM ruby:2.7
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 nodejs yarn
WORKDIR /app
COPY . /app
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

 

Dockerfileにコピペしてください。

docker-compose.yml


version: '3'
services:
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./db/mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    tty: true
    stdin_open: true

 

docker-compose.ymlにコピペしてください。

Gemfile


source 'https://rubygems.org'
gem 'rails', '~> 6.1.0'

 

Gemfileにコピペしてください。

Gemfile.lock

作成のみで何も書く必要はありません。

 

環境構築手順

各ファイルの準備が終わったら、コマンドを実行します。
Windows PowerShell」で作業を行ってください。

 

docker-compose run


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

 

database.ymlの編集


default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password  #追記
  host: db        #localhost → db 修正

 

config/database.yml」の
password:」を「passwod」、
host:」を「db」
に書き換えてください。

 

docker-compose build


docker-compose build

 

【エラー対応】


Traceback (most recent call last):
  File "site-packages\docker\utils\build.py", line 96, in create_archive
OSError: [Errno 22] Invalid argument: '\\\\?\\C:\\Users\\yakku\\docker\\nanana_blog\\node_modules\\.bin\\acorn'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose\cli\main.py", line 67, in main
  File "compose\cli\main.py", line 126, in perform_command
  File "compose\cli\main.py", line 302, in build
  File "compose\project.py", line 468, in build
  File "compose\project.py", line 450, in build_service
  File "compose\service.py", line 1125, in build
  File "site-packages\docker\api\build.py", line 160, in build
  File "site-packages\docker\utils\build.py", line 31, in tar
  File "site-packages\docker\utils\build.py", line 100, in create_archive
OSError: Can not read file in context: \\?\C:\Users\yakku\docker\nanana_blog\node_modules\.bin\acorn
[10716] Failed to execute script docker-compose

もしこのようなエラーが出たら、次の対応を行って、もう一度、「docker-compose build」を実行してください。

 

①「Dockerfile」や「docker-compose.yml」などと同じ階層の場所に「.dockerignore」ファイルを作成してください。

②「.dockerignore」に「node_module」を追記してください。


node_modules

docker-compose run web bundle install


docker-compose run web bundle install

 

docker-compose up


docker-compose up

 

db:create


docker-compose run web rails db:create

 

新しいウィンドウのターミナルで実行してください

 

localhost:3000

ブラウザで「localhost:3000」でRailsの画面が表示されるはずです。

-Docker, Ruby・Rails

Copyright© プログラミングメモ , 2022 All Rights Reserved Powered by AFFINGER5.