From 82c74ed21fb7bc459c8d273c96799ad4786dd081 Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Sun, 6 Mar 2016 08:47:37 +0100 Subject: [PATCH] Use `CMD exec` in Dockerfile Without exec the `postgrest` process is not run with PID 1 (it is a child process of the shell that starts it). This means signals send to the docker (like `docker stop` or ^C) will not be handled correctly. However, Linux treats PID 1 as special and sets the SIGTERM handler to ignore by default. It is also necessary to install a SIGTERM handler. This commit adds `exec` to resolve this problem, as per the recommendation in the Dockerfile documentation: https://docs.docker.com/engine/reference/builder/#shell-form-entrypoint-example --- CHANGELOG.md | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60ca2bf52..5bb3cdda8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased ### Fixed -- Terminate gracefully on SIGTERM - @recmo +* Terminate gracefully on SIGTERM (for use in Docker) - @recmo ## [0.3.1.0] - 2016-02-28 diff --git a/Dockerfile b/Dockerfile index 6d046ba5a..3fc7efaba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ RUN wget http://github.com/begriffs/postgrest/releases/download/v${POSTGREST_VER mv postgrest /usr/local/bin/postgrest && \ rm postgrest-${POSTGREST_VERSION}-ubuntu.tar.xz -CMD postgrest postgres://${PG_ENV_POSTGRES_USER}:${PG_ENV_POSTGRES_PASSWORD}@${PG_PORT_5432_TCP_ADDR}:${PG_PORT_5432_TCP_PORT}/${PG_ENV_POSTGRES_DB} \ +CMD exec postgrest postgres://${PG_ENV_POSTGRES_USER}:${PG_ENV_POSTGRES_PASSWORD}@${PG_PORT_5432_TCP_ADDR}:${PG_PORT_5432_TCP_PORT}/${PG_ENV_POSTGRES_DB} \ --port 3000 \ --schema ${POSTGREST_SCHEMA} \ --anonymous ${POSTGREST_ANONYMOUS} \