🛤️ M1 Mac Rails on Dockerを成功させる
作成日: 2022/01/02
1

Railsダウングレード+MySQL+MacM1でDocker環境を構築する

ひとつひとつ仕様を丁寧に確認していなかったのが悪く、過去8回くらい失敗していたがついに成功した

教訓「急がばドキュメントを読め」

Codes

Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.6'

Dockerfile

FROM ruby:2.7.2 # FROM: Rubyバージョン
RUN apt-get update -qq && apt-get install -y build-essential nodejs指定 # RUN: コンテナー内で実行するコマンド。ubuntuでパッケージのインストール。
RUN mkdir /app # RUN: Dockerのルートディレクトリで /app(Rails)フォルダーを作成
WORKDIR /app # WORKDIR: 作業ディレクトリを/appに移動
COPY Gemfile /app/Gemfile # COPY: Gemファイルのコピー/移動
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install # RUN: install
COPY . /app # COPY: Dockerファイル内の内容をすべてコピー

docker-compose.yml

version: '3' # フォーマット
services:
  web: # ====== Railsコンテナの定義 ======
    build: . # 同階層のDockerfileからイメージを使用する
    command: bundle exec rails s -p 3000 -b '0.0.0.0' # 起動時のコマンド -p サーバー -b IPアドレス
    volumes:
      - .:/app # LocalとDockerの共有パス/接点
    ports:
      - 3333:3000 # く公開するポート番号>:くコンテナ内部の転送先ポート番号〉  => http://localhost:3333/
    depends_on:
      - db # 起動時にMySQLサーバーが先に起動する
    tty: true # debug用
    stdin_open: true # debug用
  db: # ====== MySQLサーバーコンテナの定義 ======
    platform:  linux/arm64/v8 # Mac M1対応
    image: mysql:5.7 # そのまま
    volumes:
      - db-volume:/var/lib/mysql # PC上にdb-volumeという名前でボリューム(データ保持領域)を作成。コンテナ上でDBを持たせず、PCローカルにDBを保存させる
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume: # 上記の定義

GitBook

https://atit.gitbook.io/rails/rails-note/rails-kai-fa-huan-jing/rails-on-docker-fur


フロントエンド&デザインエンジニア / UIUXデザイナー / Webマーケター / アクセリビリティエンジニア