目次
準備
以下のファイルを同じフォルダ内に作成してください。
- 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の画面が表示されるはずです。