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'