首页 > 解决方案 > Docker build 说的是无法满足的约束

问题描述

我正在尝试设置一个可以运行使用 ruby​​ 1.8.7 的旧 Rails 2.3 应用程序的 docker 映像。

我找到了这个 dockerfile,当我尝试运行它时,我收到以下错误:

获取 http://alpine.gliderlabs.com/alpine/v3.6/main/x86_64/APKINDEX.tar.gz 获取 http://alpine.gliderlabs.com/alpine/v3.6/community/x86_64/APKINDEX.tar .gz 错误:无法满足的约束:ruby-rmagick(缺失):要求:world[ruby-rmagick] libressl-dev-2.5.5-r2:冲突:openssl-dev-1.0.2o-r1[pc:libcrypto=2.5.5 ] openssl-dev-1.0.2o-r1[pc:libssl=2.5.5] openssl-dev-1.0.2o-r1[pc:openssl=2.5.5] 满足:mariadb-dev-10.1.32-r0[libressl -dev] openssl-dev-1.0.2o-r1:冲突:libressl-dev-2.5.5-r2[pc:libcrypto=1.0.2o] libressl-dev-2.5.5-r2[pc:libssl=1.0.2o ] libressl-dev-2.5.5-r2[pc:openssl=1.0.2o] 满足:world[openssl-dev] 错误:服务'rails'未能构建:命令'/bin/sh -c apk update && apk升级 &&
apk --no-cache add tzdata $BUILD_PACKAGES $GEM_PACKAGES && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata' 返回非零代码:4

Dockerfile 看起来像:

FROM gliderlabs/alpine:latest

ENV BUILD_PACKAGES bash wget curl tar make gcc alpine-sdk zlib zlib-dev readline 
ENV GEM_PACKAGES openssl openssl-dev libxml2-dev libxslt-dev mysql mariadb-dev imagemagick imagemagick-dev imagemagick-c++ ruby-rmagick

RUN apk update && \
    apk upgrade && \
    apk --no-cache add tzdata \
    $BUILD_PACKAGES $GEM_PACKAGES && \
  cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
  apk del tzdata 

# build ruby
RUN wget -q -O ruby-1.8.7-p374.tar.gz http://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz && \
    tar -zxvf ruby-1.8.7-p374.tar.gz && \
    rm ruby-1.8.7-p374.tar.gz

WORKDIR ruby-1.8.7-p374
RUN ./configure --with-openssl-dir=/usr/bin
RUN make
RUN make install

# install rubygems
WORKDIR /
RUN wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz && \
    tar -zxvf rubygems-1.3.7.tgz && \
    rm rubygems-1.3.7.tgz
WORKDIR rubygems-1.3.7
RUN ruby setup.rb

# install bundler
RUN gem install bundler

WORKDIR /app
COPY Gemfile /app/

# bundle install
RUN bundle install
COPY . /home/app

标签: ruby-on-railsdockerdocker-compose

解决方案


推荐阅读