Skip to content
This repository was archived by the owner on Apr 1, 2024. It is now read-only.

Commit 0108428

Browse files
authored
[improve] Removed unnecessary native libraries from Docker images (apache#22230)
1 parent 46a0226 commit 0108428

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

docker/pulsar/Dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,19 @@
1818
#
1919

2020
# First create a stage with just the Pulsar tarball and scripts
21-
FROM busybox as pulsar
21+
FROM alpine as pulsar
22+
23+
RUN apk add zip
2224

2325
ARG PULSAR_TARBALL
2426

2527
ADD ${PULSAR_TARBALL} /
2628
RUN mv /apache-pulsar-* /pulsar
2729
RUN rm -rf /pulsar/bin/*.cmd
2830

31+
COPY build-scripts /build-scripts/
32+
RUN /build-scripts/remove-unnecessary-native-binaries.sh
33+
2934
COPY scripts/* /pulsar/bin/
3035

3136
# The final image needs to give the root group sufficient permission for Pulsar components
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env sh
2+
#
3+
# Licensed to the Apache Software Foundation (ASF) under one
4+
# or more contributor license agreements. See the NOTICE file
5+
# distributed with this work for additional information
6+
# regarding copyright ownership. The ASF licenses this file
7+
# to you under the Apache License, Version 2.0 (the
8+
# "License"); you may not use this file except in compliance
9+
# with the License. You may obtain a copy of the License at
10+
#
11+
# http://www.apache.org/licenses/LICENSE-2.0
12+
#
13+
# Unless required by applicable law or agreed to in writing,
14+
# software distributed under the License is distributed on an
15+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+
# KIND, either express or implied. See the License for the
17+
# specific language governing permissions and limitations
18+
# under the License.
19+
#
20+
21+
set -e
22+
23+
# Retain only native libraries for the architecture of this
24+
# image
25+
ARCH=$(uname -m)
26+
27+
# Remove extra binaries for Netty TCNative
28+
if [ "$ARCH" = "aarch64" ]
29+
then
30+
TC_NATIVE_TO_KEEP=linux-aarch_64
31+
else
32+
TC_NATIVE_TO_KEEP=linux-$ARCH
33+
fi
34+
ls /pulsar/lib/io.netty-netty-tcnative-boringssl-static*Final-*.jar | grep -v $TC_NATIVE_TO_KEEP | xargs rm
35+
36+
# Prune extra libs from RocksDB JAR
37+
mkdir /tmp/rocksdb
38+
cd /tmp/rocksdb
39+
ROCKSDB_JAR=$(ls /pulsar/lib/org.rocksdb-rocksdbjni-*.jar)
40+
unzip $ROCKSDB_JAR > /dev/null
41+
42+
if [ "$ARCH" = "x86_64" ]
43+
then
44+
ROCKSDB_TO_KEEP=linux64-musl
45+
else
46+
ROCKSDB_TO_KEEP=linux-$ARCH-musl
47+
fi
48+
49+
ls librocksdbjni-* | grep -v librocksdbjni-${ROCKSDB_TO_KEEP}.so | xargs rm
50+
rm $ROCKSDB_JAR
51+
zip -r -9 $ROCKSDB_JAR * > /dev/null

0 commit comments

Comments
 (0)