#ruby-on-rails #docker #dockerfile #bundle #gemfile
Вопрос:
Мой Док-файл
FROM ruby:2.6.3-alpine
ENV BUNDLER_VERSION=2.2.6
RUN apk add --update --no-cache
binutils-gold
build-base
curl
file
g
gcc
git
less
libstdc
libffi-dev
libc-dev
linux-headers
libxml2-dev
libxslt-dev
libgcrypt-dev
make
netcat-openbsd
nodejs
openssl
pkgconfig
postgresql-dev
python
tzdata
yarn
RUN gem install bundler -v 2.2.6
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle check || bundle install
COPY package.json yarn.lock ./
RUN yarn install --check-files
COPY . ./
ENTRYPOINT ["./entrypoints/docker-entrypoint.sh"]
докер-compose.yml
version: '3.4'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- database
- redis
ports:
- "3000:3000"
volumes:
- .:/app
- gem_cache:/usr/local/bundle/gems
- node_modules:/app/node_modules
env_file: .env
environment:
RAILS_ENV: development
database:
image: postgres:12.1
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
redis:
image: redis:5.0.7
sidekiq:
build:
context: .
dockerfile: Dockerfile
depends_on:
- app
- database
- redis
volumes:
- .:/app
- gem_cache:/usr/local/bundle/gems
- node_modules:/app/node_modules
env_file: .env
environment:
RAILS_ENV: development
entrypoint: ./entrypoints/sidekiq-entrypoint.sh
volumes:
gem_cache:
db_data:
node_modules:
Все хорошо работает на моем Mac после сборки
Но на моем VPS это работает не так, как ожидалось
Они были основаны на одном и том же файле Dockerfile и файле docker-compose.yml.
Я знаю, что могу перенести свой рабочий образ в концентратор докеров и просто использовать его, но я все равно хочу знать, что пошло не так? Они работают в альпийской среде, не должны отличаться.
Я нашел информацию об ошибке, а затем попробовал некоторые обходные пути, но при встрече с sassc столкнулся с той же ошибкой пакета.
Это вывод ошибки для sassc, пробовал разные версии, но все равно не сработало.
Но в конце концов все они выдают мне «Не удалось создать собственное расширение gem».
В чем здесь проблема? Почему он отлично работает на моем Mac, но на моем VPS(Ubuntu)? Я застрял здесь
Комментарии:
1. Mem было недостаточно для компиляции. Проблема решена
Ответ №1:
Mem было недостаточно для компиляции. Проблема решена.
На моем VPS есть только 1g1c, и я использую Nginx и sidekiq. В обычных случаях mem составляет всего около 600 метров. Просто mem было недостаточно для компиляции и сборки.