Docker 与捆绑安装在我的 VPS 和 Mac 上表现不一样

Docker with bundle install doesn't behave same on my VPS and Mac

我的 Dockerfile

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"]

docker-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。

我知道我可以将工作正常的图像推送到 docker 中心并使用它,但我仍然想知道哪里出了问题?他们都是在Alpine环境下工作,应该不会有什么不同。

我已经挖掘了错误信息,然后我尝试了一些解决方法,但在遇到 sassc 时遇到了同样的包错误。

这是sassc的错误输出,试过不同版本还是不行。

但最后,他们都给我“无法构建 gem 本机扩展。”

这里有什么问题?为什么它在我的 Mac 中工作正常,但在我的 VPS(Ubuntu) 中工作正常?我被困在这里

内存不够我编译。问题已解决。

我的 VPS 上只有 1g1c,而我 运行 一个 Nginx 和 sidekiq。通常情况下,内存只有 600m 左右。简单的 mem 不足以编译和构建。