Remove Dockerfile and docker.mk

Release Docker builds are now provided in a separate repository,
https://github.com/timescale/timescaledb-docker.

Tests and development builds for Docker are now provided
by two new scripts in the scripts directory:

- `docker-build.sh` to build a development image from current sources.
- `docker-run-tests.sh` to run tests for current sources through a Docker container.
This commit is contained in:
Erik Nordström 2017-05-22 10:09:54 +02:00 committed by Erik Nordström
parent 2a01ebca61
commit 3192c8a6bf
4 changed files with 63 additions and 48 deletions

View File

@ -1,21 +0,0 @@
FROM postgres:9.6.3
MAINTAINER Timescale
ENV PG_MAJOR 9.6
RUN apt-get update && apt-get install -y \
build-essential \
daemontools \
postgresql-server-dev-$PG_MAJOR \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /build/{src,test/results}
COPY sql /build/sql
COPY src/*.c src/*.h build/src/
COPY test/expected /build/test/
COPY test/sql /build/test/
COPY test/runner.sh /build/test/runner.sh
COPY timescaledb.control /build/
COPY Makefile build/Makefile
RUN make -C /build install && rm -rf /build

View File

@ -1,27 +0,0 @@
IMAGE_NAME = timescaledb
CONTAINER_NAME = timescaledb
TEST_CONTAINER_NAME = $(CONTAINER_NAME)_testing
MAKE = make
PGPORT = 5432
TEST_PGPORT = 6543
TEST_TABLESPACE_PATH = /tmp/tspace1
TEST_INSTANCE_OPTS = # clear this setting when running against existing Docker instance
build-image: Dockerfile
@docker build . -t $(IMAGE_NAME)
start-container:
@IMAGE_NAME=$(IMAGE_NAME) CONTAINER_NAME=$(CONTAINER_NAME) PGPORT=$(PGPORT) ./scripts/docker-run.sh
start-test-container:
@IMAGE_NAME=$(IMAGE_NAME) CONTAINER_NAME=$(TEST_CONTAINER_NAME) \
PGPORT=$(TEST_PGPORT) TEST_TABLESPACE_PATH=$(TEST_TABLESPACE_PATH) ./scripts/start-test-docker.sh
test: build-image start-test-container installcheck
@docker rm -f $(TEST_CONTAINER_NAME)
run: build-image start-container
include Makefile
.PHONY: test start-container start-test-container build-image

29
scripts/docker-build.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
#
# This script builds a development TimescaleDB image from the
# currently checked out source on the host.
#
SCRIPT_DIR=$(dirname $0)
BASE_DIR=${PWD}/${SCRIPT_DIR}/..
PG_IMAGE_TAG=${PG_IMAGE_TAG:-9.6.3-alpine}
BUILD_CONTAINER_NAME=${BUILD_CONTAINER_NAME:-pgbuild}
IMAGE_NAME=${IMAGE_NAME:-$USER/timescaledb}
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD ${BASE_DIR} | awk '{print $1; exit}' | sed -e "s|/|_|g")
# Clean previous containers
docker rm -f $(docker ps -a -q -f name=${BUILD_CONTAINER_NAME} 2>/dev/null) 2>/dev/null
# Run a Postgres container
docker run -u postgres -d --name ${BUILD_CONTAINER_NAME} -v ${BASE_DIR}:/src postgres:${PG_IMAGE_TAG}
# Install build dependencies
docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "apk add --no-cache --virtual .build-deps coreutils dpkg-dev gcc libc-dev make util-linux-dev diffutils && mkdir -p /build"
# Build and install the extension
docker exec -u root -it ${BUILD_CONTAINER_NAME} /bin/bash -c "cp -a /src/{src,sql,test,Makefile,timescaledb.control} /build/ && make -C /build clean && make -C /build install && echo \"shared_preload_libraries = 'timescaledb'\" >> /usr/local/share/postgresql/postgresql.conf.sample"
docker commit -a $USER -m "TimescaleDB development image" ${BUILD_CONTAINER_NAME} ${IMAGE_NAME}:${GIT_BRANCH}
echo
echo "Built image ${IMAGE_NAME}:${GIT_BRANCH}"
echo "Run 'docker run -d --name some-timescaledb -p 5432:5432 ${IMAGE_NAME}:${GIT_BRANCH}' to launch"

34
scripts/docker-run-tests.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
#
# This script runs the TimescaleDB tests through a standard PostgreSQL
# container, first installing the extension via a mounted host volume.
#
SCRIPT_DIR=$(dirname $0)
BASE_DIR=${PWD}/${SCRIPT_DIR}/..
PG_IMAGE_TAG=${PG_IMAGE_TAG:-9.6.3-alpine}
CONTAINER_NAME=${CONTAINER_NAME:-pgtest}
case $1 in
clean)
docker rm -f $(docker ps -a -q -f name=${CONTAINER_NAME} 2>/dev/null) 2>/dev/null
;;
esac
if [ $(docker ps -q -f name=${CONTAINER_NAME} 2>/dev/null | wc -l) = 0 ]; then
echo "Creating container ${CONTAINER_NAME}"
docker rm ${CONTAINER_NAME} 2>/dev/null
# Run a Postgres container
docker run -u postgres -d --name ${CONTAINER_NAME} -v ${BASE_DIR}:/src postgres:${PG_IMAGE_TAG}
# Install build dependencies
docker exec -u root -it ${CONTAINER_NAME} /bin/bash -c "apk add --no-cache --virtual .build-deps coreutils dpkg-dev gcc libc-dev make util-linux-dev diffutils && mkdir -p /build"
fi
# Copy the source files to build directory
docker exec -u root -it ${CONTAINER_NAME} /bin/bash -c "cp -a /src/{src,sql,test,Makefile,timescaledb.control} /build/ && make -C /build clean && make -C /build install"
# Run tests
docker exec -u postgres -it ${CONTAINER_NAME} /bin/bash -c "make -C /build installcheck TEST_INSTANCE_OPTS='--temp-instance=/tmp/pgdata --temp-config=/build/test/postgresql.conf'"
if [ "$?" != "0" ]; then
docker exec -it ${CONTAINER_NAME} cat /build/test/regression.diffs
fi