mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-25 10:26:22 -06:00
120 lines
3.7 KiB
Plaintext
120 lines
3.7 KiB
Plaintext
# syntax=docker/dockerfile:1.3-labs
|
|
FROM --platform=linux/amd64 golang:1.23.3-alpine as gobin
|
|
FROM --platform=linux/amd64 ubuntu:22.04
|
|
|
|
COPY --from=gobin /usr/local/go/ /go/
|
|
|
|
ENV GOPATH=$HOME/go
|
|
ENV PATH="/go/bin:${PATH}"
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt update
|
|
RUN apt install -y curl wget git
|
|
|
|
# Install sqlite3 from source
|
|
RUN \
|
|
apt-get install -y \
|
|
build-essential \
|
|
libicu-dev \
|
|
tcl \
|
|
lsb-release
|
|
|
|
RUN wget \
|
|
-O sqlite.tar.gz \
|
|
https://dolthub-tools.s3.us-west-2.amazonaws.com/sqlite-3.50.4.tar.gz \
|
|
&& tar xvfz sqlite.tar.gz \
|
|
# Configure and make SQLite3 binary
|
|
&& ./sqlite/configure --prefix=/usr \
|
|
&& make \
|
|
&& make install \
|
|
# Smoke test
|
|
&& sqlite3 --version
|
|
|
|
WORKDIR /
|
|
COPY ./sysbench-runner-tests-entrypoint.sh /entrypoint.sh
|
|
RUN git clone https://github.com/dolthub/sysbench-lua-scripts.git
|
|
RUN git clone https://github.com/Percona-Lab/sysbench-tpcc.git
|
|
|
|
# install doltgres
|
|
ENV DOLTGRESQL_VERSION=${DOLTGRESQL_VERSION:-v0.14.1}
|
|
RUN git clone https://github.com/dolthub/doltgresql.git
|
|
RUN cd doltgresql/utils/doltgres_builder/cmd && go run . "$DOLTGRESQL_VERSION"
|
|
ENV PATH="/doltgresql/utils/doltgres_builder/cmd/doltgresBin/$DOLTGRESQL_VERSION:${PATH}"
|
|
RUN doltgres -version
|
|
|
|
RUN cat <<EOF > /doltgres_config.yaml
|
|
log_level: info
|
|
|
|
behavior:
|
|
read_only: false
|
|
|
|
listener:
|
|
host: 127.0.0.1
|
|
port: 4433
|
|
read_timeout_millis: 28800000
|
|
write_timeout_millis: 28800000
|
|
EOF
|
|
|
|
WORKDIR /mysql
|
|
RUN apt install -y mysql-server
|
|
RUN mysql --version
|
|
|
|
# Install sysbench
|
|
RUN apt update
|
|
RUN curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | bash
|
|
RUN apt -y install sysbench
|
|
|
|
# Install Postgres 15
|
|
WORKDIR /postgres
|
|
RUN sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
|
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
|
|
# currently this command fails, but it succeeds on the stuff we need
|
|
RUN apt-get update -y || true
|
|
# currently this command fails, but it succeeds on the stuff we need
|
|
RUN apt-get -y install postgresql-15 || true
|
|
|
|
ENV PATH="/usr/lib/postgresql/15/bin:${PATH}"
|
|
|
|
RUN postgres --version
|
|
|
|
# create new user and add to postgres group so postgres can be run
|
|
ARG UNAME=tester
|
|
RUN useradd -m -u 199 $UNAME
|
|
RUN usermod -aG postgres tester
|
|
COPY ./mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
|
|
|
|
# install dolt
|
|
COPY ./go /home/tester/dolt/go
|
|
ENV DOLT_ROOT_PATH=/home/tester
|
|
WORKDIR /home/tester/dolt/go/cmd/dolt
|
|
RUN go build -o /usr/local/bin/dolt .
|
|
RUN go mod tidy
|
|
RUN chown -R tester:tester /go
|
|
USER $UNAME
|
|
|
|
RUN mkdir -p /home/tester/.cache
|
|
ENV GOCACHE=/home/tester/.cache/
|
|
|
|
# create directories owned by new user for mysql as well
|
|
RUN mkdir -p /home/tester/.mysql/log
|
|
WORKDIR /home/tester
|
|
|
|
# supply env vars for tests
|
|
ENV BENCHMARK_RUNNER_DOLT_VERSION="HEAD"
|
|
ENV BENCHMARK_RUNNER_DOLTGRES_VERSION="$DOLTGRESQL_VERSION"
|
|
ENV BENCHMARK_RUNNER_MYSQL_VERSION="8.0.35"
|
|
ENV BENCHMARK_RUNNER_POSTGRES_VERSION="15.5"
|
|
ENV BENCHMARK_RUNNER_DOLT_EXEC="/usr/local/bin/dolt"
|
|
ENV BENCHMARK_RUNNER_MYSQL_EXEC="/usr/sbin/mysqld"
|
|
ENV BENCHMARK_RUNNER_MYSQL_PROTOCOL="unix"
|
|
ENV BENCHMARK_RUNNER_MYSQL_SOCKET="/home/tester/.mysql/mysqld.sock"
|
|
ENV BENCHMARK_RUNNER_DOLTGRES_EXEC="/doltgresql/utils/doltgres_builder/cmd/doltgresBin/$DOLTGRESQL_VERSION/doltgres"
|
|
ENV BENCHMARK_RUNNER_DOLTGRES_CONFIG_FILE_PATH="/doltgres_config.yaml"
|
|
ENV BENCHMARK_RUNNER_POSTGRES_EXEC="/usr/lib/postgresql/15/bin/postgres"
|
|
ENV BENCHMARK_RUNNER_POSTGRES_INIT_EXEC="/usr/lib/postgresql/15/bin/initdb"
|
|
ENV BENCHMARK_RUNNER_SYSBENCH_LUA_SCRIPTS="/sysbench-lua-scripts"
|
|
ENV BENCHMARK_RUNNER_TPCC_LUA_SCRIPTS="/sysbench-tpcc"
|
|
|
|
WORKDIR /home/tester/dolt/go/performance/utils/benchmark_runner
|
|
ENTRYPOINT ["/entrypoint.sh"]
|