postgrpc 0.1.2

A JSON-transcoding-ready gRPC server for querying Postgres databases
Documentation
FROM ubuntu:20.04

# set up working directories
RUN mkdir -p /results

# install third-party packages
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update && \
  apt-get install -y \
  ca-certificates \
  curl \
  postgresql-contrib

# install gRPC tools
RUN curl -L \
  https://github.com/fullstorydev/grpcurl/releases/download/v1.8.2/grpcurl_1.8.2_linux_x86_64.tar.gz | \
  tar xvz && \
  mv ./grpcurl /usr/local/bin/grpcurl && \
  chmod +x /usr/local/bin/grpcurl

RUN curl -L \
  https://github.com/bojand/ghz/releases/download/v0.103.0/ghz-linux-x86_64.tar.gz | \
  tar xvz && \
  mv ./ghz /usr/local/bin/ghz && \
  chmod +x /usr/local/bin/ghz

# copy over the test queries for pg_bench
COPY ./queries ./queries

# run tests, sending output to files
ENV PGPASSWORD=supersecretpassword
ENTRYPOINT pgbench \
  -h postgres \
  -U postgres \
  -d postgres \
  -f ./queries/current_user.sql \
  -C -c 10 -j 10 -t 1000 -L 100 \
  -M extended > /results/postgres-current-user.txt && \
pgbench \
  -h pgbouncer \
  -U postgres \
  -d postgres \
  -p 6432 \
  -f ./queries/current_user.sql \
  -C -c 10 -j 10 -t 1000 -L 100 \
  -M extended > /results/pgbouncer-current-user.txt && \
ghz \
  -n 10000 \
  -c 50 \
  --insecure \
  -d '{"statement":"select current_user"}' \
  --call postgres.Postgres/Query \
  postgrpc:50051 > /results/postgrpc-current-user.txt