title: Slow postgresql startup in docker container
body: <p>We built a debian docker image with postgresql to run one of our service. The database is for internal container use and does not need port mapping. I believe it is installed via <code>apt-get</code> in the Dockerbuild file.</p>
  
  <p>We stop and start this service often, and it is a performance issue that the database is slow to startup. Although empty, takes sightly over 20s to accept connection on the first time we start the docker image. The log is as follow :</p>
  
  <pre><code>2019-04-05 13:05:30.924 UTC [19] LOG:  could not bind IPv6 socket: Cannot assign requested address
  2019-04-05 13:05:30.924 UTC [19] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
  2019-04-05 13:05:30.982 UTC [20] LOG:  database system was shut down at 2019-04-05 12:57:16 UTC
  2019-04-05 13:05:30.992 UTC [20] LOG:  MultiXact member wraparound protections are now enabled
  2019-04-05 13:05:30.998 UTC [19] LOG:  database system is ready to accept connections
  2019-04-05 13:05:30.998 UTC [24] LOG:  autovacuum launcher started
  2019-04-05 13:05:31.394 UTC [26] [unknown]@[unknown] LOG:  incomplete startup packet
  2019-04-19 13:21:58.974 UTC [37] LOG:  could not bind IPv6 socket: Cannot assign requested address
  2019-04-19 13:21:58.974 UTC [37] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
  2019-04-19 13:21:59.025 UTC [38] LOG:  database system was interrupted; last known up at 2019-04-05 13:05:34 UTC
  2019-04-19 13:21:59.455 UTC [39] [unknown]@[unknown] LOG:  incomplete startup packet
  2019-04-19 13:21:59.971 UTC [42] postgres@postgres FATAL:  the database system  is starting up
  [...]
  2019-04-19 13:22:15.221 UTC [85] root@postgres FATAL:  the database system is starting up
  2019-04-19 13:22:15.629 UTC [38] LOG:  database system was not properly shut down; automatic recovery in progress
  2019-04-19 13:22:15.642 UTC [38] LOG:  redo starts at 0/14EEBA8
  2019-04-19 13:22:15.822 UTC [38] LOG:  invalid record length at 0/24462D0: wanted 24, got 0
  2019-04-19 13:22:15.822 UTC [38] LOG:  redo done at 0/24462A8
  2019-04-19 13:22:15.822 UTC [38] LOG:  last completed transaction was at log time 2019-04-05 13:05:36.602318+00
  2019-04-19 13:22:16.084 UTC [38] LOG:  MultiXact member wraparound protections are now enabled
  2019-04-19 13:22:16.094 UTC [37] LOG:  database system is ready to accept connections
  2019-04-19 13:22:16.094 UTC [89] LOG:  autovacuum launcher started
  2019-04-19 13:22:21.528 UTC [92] root@test LOG:  could not receive data from client: Connection reset by peer
  2019-04-19 13:22:21.528 UTC [92] root@test LOG:  unexpected EOF on client connection with an open transaction
  </code></pre>
  
  <p>Any suggetion in fixing this startup issue ?</p>
  
  <p>EDIT : Some requested the dockerfile, here is relevant lines</p>
  
  <pre><code>RUN apt-get update \
   &amp;&amp; apt-get install -y --force-yes \
      postgresql-9.6-pgrouting \
      postgresql-9.6-postgis-2.3 \
      postgresql-9.6-postgis-2.3-scripts \
      [...]
  
  # Download, compile and install GRASS 7.2
  [...]
  
  USER postgres
  # Create a database 'grass_backend' owned by the "root" role.
  RUN /etc/init.d/postgresql start \
  &amp;&amp; psql --command "CREATE USER root WITH SUPERUSER [...];" \
  &amp;&amp; psql --command "CREATE EXTENSION postgis; CREATE EXTENSION plpython3u;" --dbname [dbname] \
   &amp;&amp; psql --command "CREATE EXTENSION postgis_sfcgal;" --dbname [dbname] \
   &amp;&amp; psql --command "CREATE EXTENSION postgis; CREATE EXTENSION plpython3u;" --dbname grass_backend
  
  WORKDIR [...]
  </code></pre>
  
  <p>End of file after workdir, meaning I guess the database isn't properly shut down</p>
  
  <p><strong>Answer</strong> I stopped properly postgresql inside the docker install. It now starts 15s faster. Thanks for replying</p>