Estaba tratando de poner awscli_v2 en un contenedor docker basado en alpine y vi que falla con el siguiente mensaje de error:
/aws/install: línea 78: /aws/dist/aws: no encontrado
Teniendo en cuenta que el archivo en sí está allí y se puede enumerar con ls, supongo que algunas bibliotecas en las que se basa el ejecutable ./aws/dist/aws no están presentes en alpine. ¿Alguien sabe qué bibliotecas podrían ser?
AWS CLI versión 2 se compila con glibc, la implementación del proyecto GNU de la biblioteca estándar C. Las distribuciones de Linux más comunes usan glibc, pero Alpine Linux se basa en cambio en musl libc .
Dado que los archivos binarios compilados con glibc no son compatibles con musl, la versión 2 de la CLI de AWS no se ejecuta en Alpine Linux.
La mejor manera de ejecutar AWS CLI versión 2 en Alpine Linux sería que Amazon proporcione uno de los siguientes:
En realidad, con un poco de esfuerzo, es posible ejecutar AWS CLI v2 en 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 \ && curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-i18n-${GLIBC_VER}.apk \ && apk add --no-cache \ glibc-${GLIBC_VER}.apk \ glibc-bin-${GLIBC_VER}.apk \ glibc-i18n-${GLIBC_VER}.apk \ && /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 \ && 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/current/dist/aws_completer \ /usr/local/aws-cli/v2/current/dist/awscli/data/ac.index \ /usr/local/aws-cli/v2/current/dist/awscli/examples \ glibc-*.apk \ && find /usr/local/aws-cli/v2/current/dist/awscli/botocore/data -name examples-1.json -delete \ && apk --no-cache del \ binutils \ curl \ && rm -rf /var/cache/apk/*El Dockerfile anterior instalará el paquete 'glibc' para Alpine, de modo que la CLI de AWS pueda encontrar las bibliotecas compartidas requeridas. El Dockerfile también elimina algunas cosas que probablemente no necesitemos, como autocompletar y ejemplos. Si necesita otros paquetes específicos, por supuesto, puede agregarlos al Dockerfile.
También puede usar https://git.adelielinux.org/adelie/gcompat
apk add gcompatfuente: https://wiki.alpinelinux.org/wiki/Running_glibc_programs
Editar muestra:
ENV AWS_CLI_VER=2.0.30 RUN apk update && apk add --no-cache curl gcompat zip && \ curl -s https://awscli.amazonaws.com/awscli-exe-linux-x86_64-${AWS_CLI_VER}.zip -o awscliv2.zip && \ unzip awscliv2.zip && ./aws/installModificar un poco la respuesta de AnthonyC funciona:
FROM frolvlad/alpine-glibc:alpine-3.14 ENV AWS_CLI_VER=2.2.43 RUN apk update && apk add --no-cache curl zip && \ curl -s https://awscli.amazonaws.com/awscli-exe-linux-x86_64-${AWS_CLI_VER}.zip -o awscliv2.zip && \ unzip awscliv2.zip && ./aws/install