首页 > 解决方案 > 使用 Alpine Linux 构建 Docker 会导致分段错误

问题描述

我一直在使用alpine/edge/community,我猜最近在引擎盖下发生了一些变化,因为我无法再从我的 docker 文件构建图像,而是出现了 seg 错误。

输出:

Sending build context to Docker daemon  54.78kB

Step 1/6 : FROM ruby:2.5-alpine
2.5-alpine: Pulling from library/ruby

...

Status: Downloaded newer image for ruby:2.5-alpine
 ---> b14dcd6b80e9
Step 2/6 : RUN apk add --update build-base gcc && gem install bundler && mkdir -p /mnt/fileview
 ---> Running in f68bd52262b7
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
(1/17) Installing binutils (2.35.1-r1)
(2/17) Installing libmagic (5.39-r0)
(3/17) Installing file (5.39-r0)
(4/17) Installing libgomp (10.2.1_pre1-r3)
(5/17) Installing libatomic (10.2.1_pre1-r3)
(6/17) Installing libgphobos (10.2.1_pre1-r3)
(7/17) Installing isl22 (0.22-r0)
[91mSegmentation fault (core dumped)
[0mThe command '/bin/sh -c apk add --update build-base gcc && gem install bundler && mkdir -p /mnt/fileview' returned a non-zero code: 139

码头工人文件:

FROM ruby:2.5-alpine
RUN apk add --update build-base gcc && gem install bundler && mkdir -p /mnt/fileview
WORKDIR /mnt/fileview
COPY * ./
RUN bundle install --deployment
CMD ["bundle", "exec", "ruby", "viewer_app.rb"]

它看起来像isl22被添加为 alpine v3.13 又名新的最新版本的依赖项,这可能会导致问题。但是我不确定如何解决这个问题。

任何指导或帮助将不胜感激。

标签: dockeralpine

解决方案


Dockerfile由于调用 bundle_install 命令时出现错误,我无法构建给定的:

DESKTOP-SI79RLD:~/test$ cat Dockerfile
FROM ruby:2.5-alpine
RUN apk add --update build-base gcc && gem install bundler && mkdir -p /mnt/fileview
WORKDIR /mnt/fileview
COPY * ./
RUN bundle install --deployment
CMD ["bundle", "exec", "ruby", "viewer_app.rb"]

DESKTOP-SI79RLD:~/test$ docker build .
[+] Building 1.2s (9/9) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 263B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/ruby:2.5-alpine                                                 0.7s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 257B                                                                                  0.0s
 => [1/5] FROM docker.io/library/ruby:2.5-alpine@sha256:009796beb93df8dc2d51aa07efd2b6e7e5b26504688e7ce0db25cec52  0.0s
 => CACHED [2/5] RUN apk add --update build-base gcc && gem install bundler && mkdir -p /mnt/fileview              0.0s
 => CACHED [3/5] WORKDIR /mnt/fileview                                                                             0.0s
 => [4/5] COPY * ./                                                                                                0.0s
 => ERROR [5/5] RUN bundle install --deployment                                                                    0.4s
------
 > [5/5] RUN bundle install --deployment:
#9 0.353 [DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
#9 0.383 Could not locate Gemfile
------
executor failed running [/bin/sh -c bundle install --deployment]: exit code: 10

推荐阅读