mirror of
https://github.com/gravitational/teleport
synced 2024-10-20 17:23:22 +00:00
f9f0ca339e
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
55 lines
2.4 KiB
Plaintext
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}
|