mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-06 21:12:55 +00:00
* Add submodule postgres-15 * Support pg_15 in pgxn/neon * Renamed zenith -> neon in Makefile * fix name of codestyle check * Refactor build system to prepare for building multiple Postgres versions. Rename "vendor/postgres" to "vendor/postgres-v14" Change Postgres build and install directory paths to be version-specific: - tmp_install/build -> pg_install/build/14 - tmp_install/* -> pg_install/14/* And Makefile targets: - "make postgres" -> "make postgres-v14" - "make postgres-headers" -> "make postgres-v14-headers" - etc. Add Makefile aliases: - "make postgres" to build "postgres-v14" and in future, "postgres-v15" - similarly for "make postgres-headers" Fix POSTGRES_DISTRIB_DIR path in pytest scripts * Make postgres version a variable in codestyle workflow * Support vendor/postgres-v15 in codestyle check workflow * Support postgres-v15 building in Makefile * fix pg version in Dockerfile.compute-node * fix kaniko path * Build neon extensions in version-specific directories * fix obsolete mentions of vendor/postgres * use vendor/postgres-v14 in Dockerfile.compute-node.legacy * Use PG_VERSION_NUM to gate dependencies in inmem_smgr.c * Use versioned ECR repositories and image names for compute-node. The image name format is compute-node-vXX, where XX is postgres major version number. For now only v14 is supported. Old format unversioned name (compute-node) is left, because cloud repo depends on it. * update vendor/postgres submodule url (zenith->neondatabase rename) * Fix postgres path in python tests after rebase * fix path in regress test * Use separate dockerfiles to build compute-node: Dockerfile.compute-node-v15 should be identical to Dockerfile.compute-node-v14 except for the version number. This is a hack, because Kaniko doesn't support build ARGs properly * bump vendor/postgres-v14 and vendor/postgres-v15 * Don't use Kaniko cache for v14 and v15 compute-node images * Build compute-node images for different versions in different jobs Co-authored-by: Heikki Linnakangas <heikki@neon.tech>
89 lines
2.7 KiB
Docker
89 lines
2.7 KiB
Docker
#
|
|
# Legacy version of the Dockerfile for the compute node.
|
|
# Used by e2e CI. Building Dockerfile.compute-node will take
|
|
# unreasonable ammount of time without v2 runners.
|
|
#
|
|
# TODO: remove once cloud repo CI is moved to v2 runners.
|
|
#
|
|
|
|
|
|
# Allow specifiyng different compute-tools tag and image repo, so we are
|
|
# able to use different images
|
|
ARG REPOSITORY=369495373322.dkr.ecr.eu-central-1.amazonaws.com
|
|
ARG IMAGE=compute-tools
|
|
ARG TAG=latest
|
|
|
|
#
|
|
# Image with pre-built tools
|
|
#
|
|
FROM $REPOSITORY/$IMAGE:$TAG AS compute-deps
|
|
# Only to get ready compute_ctl binary as deppendency
|
|
|
|
#
|
|
# Image with Postgres build deps
|
|
#
|
|
FROM debian:buster-slim AS build-deps
|
|
|
|
RUN apt-get update && apt-get -yq install automake libtool build-essential bison flex libreadline-dev zlib1g-dev libxml2-dev \
|
|
libcurl4-openssl-dev libossp-uuid-dev
|
|
|
|
#
|
|
# Image with built Postgres
|
|
#
|
|
FROM build-deps AS pg-build
|
|
|
|
# Add user postgres
|
|
RUN adduser postgres
|
|
RUN mkdir /pg && chown postgres:postgres /pg
|
|
|
|
# Copy source files
|
|
# version 14 is default for now
|
|
COPY ./vendor/postgres-v14 /pg/
|
|
COPY ./pgxn /pg/
|
|
|
|
# Build and install Postgres locally
|
|
RUN mkdir /pg/compute_build && cd /pg/compute_build && \
|
|
../configure CFLAGS='-O2 -g3' --prefix=$(pwd)/postgres_bin --enable-debug --with-uuid=ossp && \
|
|
# Install main binaries and contribs
|
|
make MAKELEVEL=0 -j $(getconf _NPROCESSORS_ONLN) -s install && \
|
|
make MAKELEVEL=0 -j $(getconf _NPROCESSORS_ONLN) -s -C contrib/ install && \
|
|
# Install headers
|
|
make MAKELEVEL=0 -j $(getconf _NPROCESSORS_ONLN) -s -C src/include install
|
|
|
|
# Install neon contrib
|
|
RUN make MAKELEVEL=0 PG_CONFIG=/pg/compute_build/postgres_bin/bin/pg_config -j $(getconf _NPROCESSORS_ONLN) -C /pg/neon install
|
|
|
|
USER postgres
|
|
WORKDIR /pg
|
|
|
|
#
|
|
# Final compute node image to be exported
|
|
#
|
|
FROM debian:buster-slim
|
|
|
|
# libreadline-dev is required to run psql
|
|
RUN apt-get update && apt-get -yq install libreadline-dev libossp-uuid-dev
|
|
|
|
# Add user postgres
|
|
RUN mkdir /var/db && useradd -m -d /var/db/postgres postgres && \
|
|
echo "postgres:test_console_pass" | chpasswd && \
|
|
mkdir /var/db/postgres/compute && mkdir /var/db/postgres/specs && \
|
|
chown -R postgres:postgres /var/db/postgres && \
|
|
chmod 0750 /var/db/postgres/compute
|
|
|
|
# Copy ready Postgres binaries
|
|
COPY --from=pg-build /pg/compute_build/postgres_bin /usr/local
|
|
|
|
# Copy binaries from compute-tools
|
|
COPY --from=compute-deps /usr/local/bin/compute_ctl /usr/local/bin/compute_ctl
|
|
|
|
# XXX: temporary symlink for compatibility with old control-plane
|
|
RUN ln -s /usr/local/bin/compute_ctl /usr/local/bin/zenith_ctl
|
|
|
|
# Add postgres shared objects to the search path
|
|
RUN echo '/usr/local/lib' >> /etc/ld.so.conf && /sbin/ldconfig
|
|
|
|
USER postgres
|
|
|
|
ENTRYPOINT ["/usr/local/bin/compute_ctl"]
|