Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Postgres shuts down immediately when started with docker-compose

Postgres shuts down immediately when started with docker-compose. The yaml file used is below

version: '2'  services:        postgres:         image: postgres:9.5         container_name: local-postgres9.5         ports:           - "5432:5432" 

The log when docker-compose up command is executed

Creating local-postgres9.5 Attaching to local-postgres9.5 local-postgres9.5 | The files belonging to this database system will be owned by user "postgres". local-postgres9.5 | This user must also own the server process. local-postgres9.5 | local-postgres9.5 | The database cluster will be initialized with locale "en_US.utf8". local-postgres9.5 | The default database encoding has accordingly been set to "UTF8". local-postgres9.5 | The default text search configuration will be set to "english". local-postgres9.5 | local-postgres9.5 | Data page checksums are disabled. local-postgres9.5 | local-postgres9.5 | fixing permissions on existing directory /var/lib/postgresql/data ... ok local-postgres9.5 | creating subdirectories ... ok local-postgres9.5 | selecting default max_connections ... 100 local-postgres9.5 | selecting default shared_buffers ... 128MB local-postgres9.5 | selecting dynamic shared memory implementation ... posix local-postgres9.5 | creating configuration files ... ok local-postgres9.5 | creating template1 database in /var/lib/postgresql/data/base/1 ... ok local-postgres9.5 | initializing pg_authid ... ok local-postgres9.5 | initializing dependencies ... ok local-postgres9.5 | creating system views ... ok local-postgres9.5 | loading system objects' descriptions ... ok local-postgres9.5 | creating collations ... ok local-postgres9.5 | creating conversions ... ok local-postgres9.5 | creating dictionaries ... ok local-postgres9.5 | setting privileges on built-in objects ... ok local-postgres9.5 | creating information schema ... ok local-postgres9.5 | loading PL/pgSQL server-side language ... ok local-postgres9.5 | vacuuming database template1 ... ok local-postgres9.5 | copying template1 to template0 ... ok local-postgres9.5 | copying template1 to postgres ... ok local-postgres9.5 | syncing data to disk ... ok local-postgres9.5 | local-postgres9.5 | WARNING: enabling "trust" authentication for local connections local-postgres9.5 | You can change this by editing pg_hba.conf or using the option -A, or local-postgres9.5 | --auth-local and --auth-host, the next time you run initdb. local-postgres9.5 | local-postgres9.5 | Success. You can now start the database server using: local-postgres9.5 | local-postgres9.5 |     pg_ctl -D /var/lib/postgresql/data -l logfile start local-postgres9.5 | local-postgres9.5 | **************************************************** local-postgres9.5 | WARNING: No password has been set for the database. local-postgres9.5 |          This will allow anyone with access to the local-postgres9.5 |          Postgres port to access your database. In local-postgres9.5 |          Docker's default configuration, this is local-postgres9.5 |          effectively any other container on the same local-postgres9.5 |          system. local-postgres9.5 | local-postgres9.5 |          Use "-e POSTGRES_PASSWORD=password" to set local-postgres9.5 |          it in "docker run". local-postgres9.5 | **************************************************** local-postgres9.5 | waiting for server to start....LOG:  database system was shut down at 2016-05-16 16:51:54 UTC local-postgres9.5 | LOG:  MultiXact member wraparound protections are now enabled local-postgres9.5 | LOG:  database system is ready to accept connections local-postgres9.5 | LOG:  autovacuum launcher started local-postgres9.5 |  done local-postgres9.5 | server started local-postgres9.5 | ALTER ROLE local-postgres9.5 | local-postgres9.5 | local-postgres9.5 | /docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* local-postgres9.5 | local-postgres9.5 | LOG:  received fast shutdown request local-postgres9.5 | LOG:  aborting any active transactions local-postgres9.5 | LOG:  autovacuum launcher shutting down local-postgres9.5 | LOG:  shutting down local-postgres9.5 | waiting for server to shut down....LOG:  database system is shut down local-postgres9.5 |  done local-postgres9.5 | server stopped local-postgres9.5 | local-postgres9.5 | PostgreSQL init process complete; ready for start up. local-postgres9.5 | local-postgres9.5 | LOG:  database system was shut down at 2016-05-16 16:51:55 UTC local-postgres9.5 | LOG:  MultiXact member wraparound protections are now enabled local-postgres9.5 | LOG:  database system is ready to accept connections local-postgres9.5 | LOG:  autovacuum launcher started 

Postgres seems to work fine when a container is started using the same image with docker run

docker run --name local-postgres9.5 -p 5432:5432 postgres:9.5 
like image 203
arjunurs Avatar asked May 16 '16 17:05

arjunurs


People also ask

Can I run Postgres in Docker?

Developers can perform Data Processing Operations using any Database Management System (DBMS) like PostgreSQL by pulling in their respective Docker Image files from the Docker Hub.

What is Depends_on in Docker compose?

depends_on is a Docker Compose keyword to set the order in which services must start and stop. For example, suppose we want our web application, which we'll build as a web-app image, to start after our Postgres container.

What is Pg_isready?

pg_isready is a utility for checking the connection status of a PostgreSQL database server. The exit status specifies the result of the connection check.


1 Answers

If you look at your log output, the following lines appear towards the end:

local-postgres9.5 | server stopped local-postgres9.5 | local-postgres9.5 | PostgreSQL init process complete; ready for start up. 

Apparently, stopping and restarting the Postgres server is part of the initialisation process. In fact, the second-to-last line says

local-postgres9.5 | LOG:  database system is ready to accept connections. 
like image 124
Jan D Avatar answered Oct 03 '22 23:10

Jan D