-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.kong-3.3.0-ubi-8.7
94 lines (88 loc) · 4.46 KB
/
Dockerfile.kong-3.3.0-ubi-8.7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
FROM registry.access.redhat.com/ubi8/ubi:8.7
ENV KONG_PATCH=https://raw.githubusercontent.com/ppc64le/build-scripts/master/k/kong/kong-3.3.0.patch
ENV RULES_RUST_PATCH=https://raw.githubusercontent.com/ppc64le/build-scripts/master/k/kong/kong-3.3.0-rules_rust.patch
ENV PACKAGE_NAME=kong
ENV PACKAGE_VERSION=3.3.0
ENV PACKAGE_URL=https://github.com/kong/kong/
ENV PYTHON_VERSION=3.10.2
ENV wdir=/tmp
#Install required repos
RUN dnf -y install --nogpgcheck https://vault.centos.org/8.5.2111/BaseOS/ppc64le/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm \
https://vault.centos.org/8.5.2111/BaseOS/ppc64le/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm \
&& sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* \
&& sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* \
&& sed -i 's|enabled=0|enabled=1|g' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo
#Build and install Kong
RUN dnf install -y automake gcc gcc-c++ git libyaml-devel make patch perl perl-IPC-Cmd protobuf-devel zip unzip valgrind valgrind-devel zlib-devel wget cmake java-11-openjdk-devel tzdata-java curl file libffi-devel \
&& export JAVA_HOME=$(compgen -G '/usr/lib/jvm/java-11-openjdk-*') \
&& export JRE_HOME=${JAVA_HOME}/jre \
&& export PATH=${JAVA_HOME}/bin:$PATH \
&& cd $wdir \
&& wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \
&& tar xzf Python-${PYTHON_VERSION}.tgz \
&& rm -rf Python-${PYTHON_VERSION}.tgz \
&& cd Python-${PYTHON_VERSION} \
&& ./configure --enable-shared --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions \
&& make -j ${nproc} \
&& make altinstall \
&& ln -sf $(which python3.10) /usr/bin/python3 \
&& ln -sf $(which pip3.10) /usr/bin/pip3 \
&& ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.10/site-packages/lsb_release.py \
&& export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$wdir/Python-3.10.2/lib \
&& export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib \
&& python3 -V && pip3 -V \
&& cd $wdir \
&& wget $KONG_PATCH \
&& wget $RULES_RUST_PATCH \
&& git clone ${PACKAGE_URL} \
&& cd ${PACKAGE_NAME} && git checkout ${PACKAGE_VERSION} \
&& BAZEL_VERSION=$(cat .bazelversion) \
&& cd $wdir \
&& mkdir bazel \
&& cd bazel \
&& wget https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-dist.zip \
&& unzip bazel-${BAZEL_VERSION}-dist.zip \
&& rm -rf bazel-${BAZEL_VERSION}-dist.zip \
&& ./compile.sh \
&& export PATH=$PATH:$wdir/bazel/output \
&& curl https://sh.rustup.rs -sSf | sh -s -- -y && source ~/.cargo/env \
&& cargo install cross --version 0.2.1 \
&& cd $wdir \
&& wget https://go.dev/dl/go1.20.5.linux-ppc64le.tar.gz \
&& rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-ppc64le.tar.gz \
&& rm -rf go1.20.5.linux-ppc64le.tar.gz \
&& export PATH=$PATH:/usr/local/go/bin \
&& go version \
&& go install github.com/go-task/task/v3/cmd/task@latest \
&& export PATH=$PATH:$HOME/go/bin \
&& cd $wdir/${PACKAGE_NAME} \
&& git apply $wdir/kong-${PACKAGE_VERSION}.patch \
&& make build-release > /dev/null 2>&1 || true \
&& pushd $(find $HOME/.cache/bazel -name rules_rust) \
&& git apply $wdir/kong-${PACKAGE_VERSION}-rules_rust.patch \
&& cd crate_universe \
&& cross build --release --locked --bin cargo-bazel --target=powerpc64le-unknown-linux-gnu \
&& export CARGO_BAZEL_GENERATOR_URL=file://$(pwd)/target/powerpc64le-unknown-linux-gnu/release/cargo-bazel \
&& popd \
&& cd $wdir \
&& git clone https://github.com/goreleaser/nfpm.git \
&& cd nfpm && git checkout v2.30.1 \
&& task setup \
&& task build \
&& export NFPM_BIN=$(pwd)/nfpm \
&& cd $wdir/${PACKAGE_NAME} \
&& make package/deb > /dev/null 2>&1 || true \
&& cp -f $NFPM_BIN $(find $HOME/.cache/bazel -type d -name nfpm) \
&& make package/rpm \
&& cp $(find / -name kong.el8.ppc64le.rpm) $wdir \
&& export KONG_RPM=$wdir/kong.el8.ppc64le.rpm \
&& rm -rf /tmp/kong /tmp/bazel \
&& dnf -y remove automake gcc gcc-c++ git libyaml-devel make patch perl perl-IPC-Cmd protobuf-devel zip unzip valgrind valgrind-devel zlib-devel wget cmake java-11-openjdk-devel tzdata-java file libffi-devel \
&& dnf -y install $KONG_RPM
#Expose port
EXPOSE 8000
EXPOSE 8001
EXPOSE 8443
EXPOSE 8444
#Entry point
CMD ["kong", "start"]