Skip to content

Commit 9a2aeb2

Browse files
authored
[feat][build] Support ARM64-based docker images (apache#17733)
1 parent dba9c08 commit 9a2aeb2

File tree

5 files changed

+17
-16
lines changed

5 files changed

+17
-16
lines changed

docker/pulsar/Dockerfile

+3-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ RUN mkdir -p /etc/apt/keyrings \
6969
&& echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \
7070
&& apt-get update \
7171
&& apt-get -y dist-upgrade \
72-
&& apt-get -y install temurin-17-jdk
72+
&& apt-get -y install temurin-17-jdk \
73+
&& export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \
74+
&& echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$ARCH/conf/security/java.security \
7375

7476
# Cleanup apt
7577
RUN apt-get -y --purge autoremove \
@@ -87,13 +89,10 @@ RUN pip3 install pyyaml==5.4.1
8789
# 4. /pulsar - hadoop writes to this directory
8890
RUN mkdir /pulsar && chmod g+w /pulsar
8991

90-
ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64
91-
RUN echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-amd64/conf/security/java.security
9292
ADD target/python-client/ /pulsar/pulsar-client
9393

9494
ENV PULSAR_ROOT_LOGGER=INFO,CONSOLE
9595

96-
9796
COPY --from=pulsar /pulsar /pulsar
9897
WORKDIR /pulsar
9998

docker/pulsar/pom.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<packaging>pom</packaging>
3232

3333
<properties>
34+
<pythonClientBuildArch>x86_64</pythonClientBuildArch>
3435
<skipBuildPythonClient>false</skipBuildPythonClient>
3536
<skipCopyPythonClients>false</skipCopyPythonClients>
3637
</properties>
@@ -79,7 +80,7 @@
7980
<executable>${project.basedir}/../../pulsar-client-cpp/docker/build-wheels.sh</executable>
8081
<arguments>
8182
<!-- build python 3.8 -->
82-
<argument>3.8 cp38-cp38 manylinux2014 x86_64</argument>
83+
<argument>3.8 cp38-cp38 manylinux2014 ${pythonClientBuildArch}</argument>
8384
</arguments>
8485
</configuration>
8586
</execution>

docker/pulsar/scripts/install-pulsar-client.sh

+7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@
2020

2121
set -x
2222

23+
# TODO: remove these lines once grpcio doesn't need to compile from source on ARM64 platform
24+
ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1')
25+
if [ "${ARCH}" == "arm64" ]; then
26+
apt update
27+
apt -y install build-essential python3-dev
28+
fi
29+
2330
PYTHON_MAJOR_MINOR=$(python3 -V | sed -E 's/.* ([[:digit:]]+)\.([[:digit:]]+).*/\1\2/')
2431
WHEEL_FILE=$(ls /pulsar/pulsar-client | grep "cp${PYTHON_MAJOR_MINOR}")
2532
pip3 install /pulsar/pulsar-client/${WHEEL_FILE}[all]

tests/docker-images/java-test-image/Dockerfile

+3-4
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ RUN mkdir -p /etc/apt/keyrings \
4646
&& echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \
4747
&& apt-get update \
4848
&& apt-get -y dist-upgrade \
49-
&& apt-get -y install temurin-17-jdk
50-
51-
ENV JAVA_HOME /usr/lib/jvm/temurin-17-jdk-amd64
52-
RUN echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-amd64/conf/security/java.security
49+
&& apt-get -y install temurin-17-jdk \
50+
&& export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \
51+
&& echo networkaddress.cache.ttl=1 >> /usr/lib/jvm/temurin-17-jdk-$ARCH/conf/security/java.security
5352

5453
# /pulsar/bin/watch-znode.py requires python3-kazoo
5554
# /pulsar/bin/pulsar-managed-ledger-admin requires python3-protobuf

tests/docker-images/latest-version-image/Dockerfile

+2-7
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,8 @@ RUN apt-get install -y procps curl git build-essential
2929

3030
ENV GOLANG_VERSION 1.15.8
3131

32-
RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz \
33-
| tar -C /usr/local -xz
34-
35-
# RUN wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz && tar -xvf go1.13.3.linux-amd64.tar.gz && mv go /usr/local
36-
# RUN export GOROOT=/usr/local/go && export GOPATH=$HOME/go && export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
37-
# RUN echo "export GOROOT=/usr/local/go" >> ~/.profile && echo "export GOPATH=$HOME/go" >> ~/.profile && echo "export PATH=$GOPATH/bin:$GOROOT/bin:$PATH" >> ~/.profile
38-
32+
RUN export ARCH=$(uname -m | sed -r 's/aarch64/arm64/g' | awk '!/arm64/{$0="amd64"}1') \
33+
&& curl -sSL https://golang.org/dl/go$GOLANG_VERSION.linux-$ARCH.tar.gz | tar -C /usr/local -xz
3934
ENV PATH /usr/local/go/bin:$PATH
4035

4136
RUN mkdir -p /go/src /go/bin && chmod -R 777 /go

0 commit comments

Comments
 (0)