My avatar

M1 Mac の Docker で gem install grpc に失敗するときの対策

2023-06-10

thumbnail

docker-compose で bundle install したり、ビルドしようとするとエラーが発生。

色々試していたところ、grpc をインストールするステップで必ず失敗していること確認。

docker-compose run web gem install grpc

#=>
Installing grpc 1.43.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
省略
...
ERROR: 137

alpine Linuxが悪さをしている?という記事を見てビルドイメージを変更するが改善せず。

結論、docker-compose.yml で platform を明示することで動作するようになった。

以下、実行時のファイル内容を残しておきます。

# ディレクトリ構成
root/
 ├ Gemfile
 ├ Gemfile.lock
 ├ Dockerfile
 └ docker-compose.yml
# Dockerfile
FROM ruby:3.0.1

RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    default-mysql-client \
    yarn

WORKDIR 'app'

COPY ./Gemfile* ./

RUN bundle install
# docker-compose.yml
version: '3.8'

services:
  ruby:
    platform: linux/x86_64 #=> 追加
    build:
      context: ./
      dockerfile: Dockerfile
    volumes:
      - ./:/app
      - ruby-bundle:/usr/local/bundle
    stdin_open: true
    tty: true
volumes:
  ruby-bundle:
# Gemfile
gem 'google-cloud-pubsub'
gem 'grpc'
gem 'google-protobuf'
gem 'pristine'
profil
profil

KURO

Tokyo

サーバーサイドエンジニア1年目。

学習内容やメモ書きを残します。