teleport/build.assets/Dockerfile-teleterm
Alan Parra f9f0ca339e
Bump grpc-related dependencies (#17265)
Bumps:

* protoc to v3.20.3
* protoc-gen-go to v1.5.2 (github.com/google/protobuf version, Teleterm only)
* google.golang.org/grpc to v1.50.0
* google.golang.org/grpc/examples
2022-10-11 14:29:01 +00:00

55 lines
2.4 KiB
Plaintext

ARG BUILDBOX_VERSION
# GRPC_NODE_PLUGIN_BINARY_TYPE can be "prebuilt" or "compiled"
ARG GRPC_NODE_PLUGIN_BINARY_TYPE
FROM public.ecr.aws/gravitational/teleport-buildbox:$BUILDBOX_VERSION as base
ARG BUILDARCH
# Install node
ARG NODE_VERSION
ENV NODE_URL="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${BUILDARCH}.tar.xz"
ENV NODE_PATH="/usr/local/lib/nodejs-linux"
ENV PATH="$PATH:${NODE_PATH}/bin"
RUN (export NODE_ARCH=$(if [ "$BUILDARCH" = "amd64" ]; then echo "x64"; else echo "arm64"; fi) && \
export NODE_URL="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" && \
mkdir -p ${NODE_PATH} && \
curl -o /tmp/nodejs.tar.xz -L ${NODE_URL} && \
tar -xJf /tmp/nodejs.tar.xz -C /usr/local/lib/nodejs-linux --strip-components=1)
RUN corepack enable yarn
# Install js proto tools
# protoc-gen-go pulled from base image.
RUN (npm install --global grpc_tools_node_protoc_ts@5.0.1)
# Install rpm tools so we can build rpm packages
RUN apt-get update -y && apt-get install -q -y --no-install-recommends rpm && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
FROM base as grpc_node_plugin_binary_prebuilt
ONBUILD RUN (npm install --global grpc-tools@1.11.2)
FROM base as grpc_node_plugin_binary_compiled
ONBUILD RUN apt-get update -y && \
apt-get install -q -y --no-install-recommends build-essential cmake jq && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
ONBUILD RUN (npm install --global --ignore-scripts grpc-tools@1.11.2)
ONBUILD COPY teleterm_linux_arm64.toolchain.cmake ./linux_arm64.toolchain.cmake
ONBUILD RUN git clone --depth=1 --branch=grpc-tools@1.11.2 https://github.com/grpc/grpc-node.git && \
mv linux_arm64.toolchain.cmake grpc-node/packages/grpc-tools/. && \
cd grpc-node && \
git submodule update --init --recursive && \
cd packages/grpc-tools && \
cmake -DCMAKE_TOOLCHAIN_FILE=linux_arm64.toolchain.cmake . && \
cmake --build . --target clean && cmake --build . --target grpc_node_plugin -- -j 12 && \
cp grpc_node_plugin $(npm root -g)/grpc-tools/bin/. && \
# grpc-tools requires both protoc and grpc_node_plugin, but protoc is already installed by
# the buildbox image.
ln -s $(which protoc) $(npm root -g)/grpc-tools/bin/protoc && \
cd ../../.. && \
rm -rf grpc-node
# Choose an appropriate image and run ONBUILD instructions from it.
FROM grpc_node_plugin_binary_${GRPC_NODE_PLUGIN_BINARY_TYPE}