Alpine Linuxにインストールされているのは glibc ではなくて musl-libc なので、適当にソフトウェアをインストールしても動かないということがたびたび発生する。 例: AWS CLI v2、Androidのビルド
glibcをalpineにインストールする
sgerrand/alpine-pkg-glibc: A glibc compatibility layer package for Alpine Linux をインストールする。 基本的にはREADMEの通りに。
alpineにglibcをインストールしたdockerイメージがあるので、そのDockerfileを参考にするとよいかも
docker-alpine-glibc/Dockerfile at master · Docker-Hub-frolvlad/docker-alpine-glibc
2.35 ではバグがあり、/lib64にglibcではなくmuslのまま配置されるので、インストールしたものが動かないことがある。 解決していなさそうなので、2.34 にバージョンを下げることで対処。 2.35-r0: glibc compatibility regression due to removal of /lib64 · Issue #181 · sgerrand/alpine-pkg-glibc · GitHub
AlpineでAndroidビルドする
GitHub - alvr/alpine-android: 🐋 Small docker image for building & testing Android applications.
https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-alpine/11/Dockerfile
ARG JDK_VERSION=8
FROM amazoncorretto:${JDK_VERSION}-alpine-jdk as jdk
FROM alpine:3.16
# copy jdk
ARG JDK_VERSION=8
RUN mkdir /usr/lib/jvm
COPY --from=jdk /usr/lib/jvm/java-${JDK_VERSION}-amazon-corretto /usr/lib/jvm/default-jvm
ENV ANDROID_SDK_VERSION=8512546
ENV LANG=C.UTF-8
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
ENV PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${JAVA_HOME}/bin
RUN apk --update add \
bash \
jq \
curl
# 参考: https://github.com/Docker-Hub-frolvlad/docker-alpine-glibc
# install alpine-pkg-glibc apk and set C.UTF-8 locale as default
RUN BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \
VERSION="2.34-r0" && \
BASE_FILE="glibc-$VERSION.apk" && BIN_FILE="glibc-bin-$VERSION.apk" && I18N_FILE="glibc-i18n-$VERSION.apk" && \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget "$BASE_URL/$VERSION/$BASE_FILE" "$BASE_URL/$VERSION/$BIN_FILE" "$BASE_URL/$VERSION/$I18N_FILE" && \
apk add --no-cache "$BASE_FILE" "$BIN_FILE" "$I18N_FILE" && \
rm "/etc/apk/keys/sgerrand.rsa.pub" && \
/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true && \
echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \
apk del glibc-i18n && \
rm "$BASE_FILE" "$BIN_FILE" "$I18N_FILE"
# install Android SDK
RUN FILE=commandlinetools-linux-${ANDROID_SDK_VERSION}_latest.zip && \
mkdir -p ${ANDROID_SDK_ROOT} && \
mkdir -p /tmp && \
cd ${ANDROID_SDK_ROOT} && \
wget https://dl.google.com/android/repository/${FILE} && \
unzip ${FILE} && \
rm ${FILE} && \
cd cmdline-tools && \
mkdir latest && \
mv * latest/ && \
mkdir -p ~/.android && \ touch ~/.android/repositories.cfg && \
(yes || true) | sdkmanager --licenses