awscli версия 2 на альпийском linux - PullRequest
4 голосов
/ 19 февраля 2020

Я пытался поместить awscli_v2 в альпийский контейнер docker и вижу, что он выходит из строя со следующим сообщением об ошибке:

/ aws / install: line 78: / aws / dist / aws: не найдено

Учитывая, что сам файл есть и его можно перечислить с помощью ls, я думаю, что некоторые библиотеки, на которые опирается исполняемый файл ./aws/dist/aws нет на альпийском. Кто-нибудь знает, какие это могут быть библиотеки?

Ответы [ 2 ]

3 голосов
/ 17 апреля 2020

На самом деле, приложив немного усилий, можно запустить AWS CLI v2 на Alpine:

FROM alpine:3.11

ENV GLIBC_VER=2.31-r0

# install glibc compatibility for alpine
RUN apk --no-cache add \
        binutils \
        curl \
    && curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
    && curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk \
    && curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk \
    && apk add --no-cache \
        glibc-${GLIBC_VER}.apk \
        glibc-bin-${GLIBC_VER}.apk \
    && curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
    && unzip awscliv2.zip \
    && aws/install \
    && rm -rf \
        awscliv2.zip \
        aws \
        /usr/local/aws-cli/v2/*/dist/aws_completer \
        /usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
        /usr/local/aws-cli/v2/*/dist/awscli/examples \
    && apk --no-cache del \
        binutils \
        curl \
    && rm glibc-${GLIBC_VER}.apk \
    && rm glibc-bin-${GLIBC_VER}.apk \
    && rm -rf /var/cache/apk/*

Приведенный выше Dockerfile установит пакет 'glib c' для Alpine, так что AWS CLI сможет найти необходимые общие библиотеки. Dockerfile также удаляет некоторые вещи, которые нам, вероятно, не нужны, такие как автозаполнение и примеры. Если вам нужны другие специфические c пакеты, вы, конечно, можете добавить их в Dockerfile.

1 голос
/ 19 марта 2020

AWS CLI версии 2 скомпилирован с glib c, реализацией проекта GNU стандартной библиотеки C. В наиболее распространенных Linux дистрибутивах используется glib c, но Alpine Linux вместо этого основан на musl lib c.

, поскольку двоичные файлы, скомпилированные с использованием glib c, не являются совместимый с musl, AWS CLI версии 2 не работает на Alpine Linux.

Лучший способ запустить AWS CLI версии 2 на Alpine Linux - предоставить Amazon один из следующих вариантов: следующее:

  • Двоичные файлы, скомпилированные для musl
  • Исходный дистрибутив, который можно скомпилировать на Alpine Linux
  • Официальный AWS CLI Docker изображение на основе Alpine Linux
...