My avatar

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

2022-02-11

thumbnail

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

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

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年目。

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