Докер с установкой пакета ведет себя по-другому на моем VPS и Mac

#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 было недостаточно для компиляции и сборки.