1+ FROM eclipse-temurin:17 as builder
2+
3+ ENV MAVEN_OPTS="-Xss64m -Xmx2g -XX:ReservedCodeCacheSize=1g"
4+ ENV SPARK_VERSION=3.5.3
5+ ENV SPARK_HOME=/opt/spark
6+ ENV SPARK_TGZ_URL=https://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}.tgz
7+
8+ WORKDIR /opt
9+
10+ RUN apt-get update; \
11+ apt-get install -y wget patch gettext-base gnupg2 bash tini libc6 libpam-modules krb5-user libnss3 procps net-tools gosu libnss-wrapper; \
12+ rm -rf /var/lib/apt/lists/*
13+
14+
15+ RUN set -ex; \
16+ mkdir -p $SPARK_HOME; \
17+ wget -nv -O /opt/spark.tgz "$SPARK_TGZ_URL" ; \
18+ tar -zxf /opt/spark.tgz --strip-components=1 --directory=$SPARK_HOME; \
19+ rm /opt/spark.tgz
20+
21+
22+ WORKDIR $SPARK_HOME
23+
24+ COPY mtls/spark-40909.patch .
25+ RUN patch -p1 < $SPARK_HOME/spark-40909.patch
26+
27+ RUN ./dev/make-distribution.sh \
28+ --name spark-mtls \
29+ -Pconnect \
30+ -Pkubernetes \
31+ -Phadoop-3 \
32+ -Phadoop-cloud \
33+ -Pparquet-provided \
34+ -Phive \
35+ -Phive-thriftserver
36+
37+ # # IMPORTANT! We must delete the spark-connect-commom jar from the jars directory!
38+ # # see: https://issues.apache.org/jira/browse/SPARK-45201
39+ # RUN rm "${SPARK_HOME}/jars/spark-connect-common_${SCALA_VERSION}-${SPARK_VERSION}.jar"
40+ FROM python:3.10.14-slim-bookworm
41+ ARG spark_uid=185
42+ ENV SPARK_HOME=/opt/spark
43+
44+ RUN apt-get update; \
45+ apt-get install -y --no-install-recommends openjdk-17-jre tini procps gettext-base maven gettext-base curl; \
46+ rm -rf /var/lib/apt/lists/*
47+
48+
49+ RUN groupadd --system --gid=${spark_uid} spark && \
50+ useradd --system --uid=${spark_uid} --gid=spark spark
51+
52+ COPY --from=builder /opt/spark/dist/ ${SPARK_HOME}/
53+
54+ RUN chown -R spark:spark ${SPARK_HOME}/
55+
56+ RUN cp ${SPARK_HOME}/kubernetes/dockerfiles/spark/entrypoint.sh /opt/entrypoint.sh; \
57+ chmod a+x /opt/entrypoint.sh; \
58+ cp ${SPARK_HOME}/kubernetes/dockerfiles/spark/decom.sh /opt/decom.sh; \
59+ chmod a+x /opt/decom.sh
60+
61+ COPY mtls/scripts/wait_for_istio_sidecar.sh /opt/scripts/wait_for_istio_sidecar.sh
62+ RUN chmod +x /opt/scripts/wait_for_istio_sidecar.sh
63+
64+ COPY mtls/scripts/stop_istio_sidecar.sh /opt/scripts/stop_istio_sidecar.sh
65+ RUN chmod +x /opt/scripts/stop_istio_sidecar.sh
66+
67+ # switch to spark user
68+
69+ WORKDIR /opt
70+ COPY docker/pom.xml .
71+
72+ RUN mvn validate
73+
74+ RUN mvn install
75+
76+ RUN mvn dependency:copy-dependencies package
77+
78+ USER spark
79+ WORKDIR /home/spark
80+
81+ COPY docker/requirements.txt .
82+ RUN pip install -r requirements.txt
83+
84+ ENTRYPOINT ["/opt/entrypoint.sh" ]
0 commit comments