Postgres

PostgreSQL is an advanced open source database server.

You can easily add it to your Lando app by adding an entry to the services top-level config in your Landofile.

Supported versions

Patch versions

Not officially supported!

While we allow users to specify patch versions for this service they are not officially supported so if you use one YMMV.

To use a patch version you can do something like this:

services:
  my-service:
    type: postgres:9.6.11

But make sure you use one of the available patch tags for the underlying image we are using.

Configuration

Here are the configuration options, set to the default values, for this service. If you are unsure about where this goes or what this means we highly recommend scanning the services documentation to get a good handle on how the magicks work.

Also note that the below options are in addition to the build steps and overrides that are available to every service.

Be careful when switching database type, version or credentials

You should be careful switching database type, version or creds.

In the case of type and version the underlying database files between these things is likely not be compatible. In the case of credentials, these are set when the container is initially created so in order to change them you need to lando destroy && lando start. Note that lando destroy will delete all the data in your database.

Ignoring this warning can cause your database service to not start correctly!!! You can read more about this here

services:
  my-service:
    type: postgres:10
    portforward: false
    creds:
      database: database
      # Note that you cannot change the below but they are shown here for transparency
      # You can read more about why this is below
      # By "NO PASSWORD" we mean the password is blank
      user: postgres
      password: NO PASSWORD
    config:
      database: SEE BELOW

Portforwarding

portforward will allow you to access this service externally by given you a port directly on your host's localhost. Note that portforward can be set to either true or a specific port but we highly recommend you set it to true unless you have pretty good knowledge of how port assignment works or you have a very compelling reason for needing a locked down port.

portforward: true will prevent inevitable port collisions and provide greater reliability and stability across Lando apps. That said, one downside of portforward: true is that Docker will assign a different port every time you restart your application. You can read more about accessing services externally over here.

tl;dr

Recommended

services:
  my-service:
    type: postgres
    portforward: true

Not recommended

services:
  my-service:
    type: postgres
    portforward: 5432

Setting custom credentials

The postgres service user is set to postgres and the password is empty. It does not allow setting a custom user or password as this interferes with tooling commands and build steps. Lando needs to access the postgres super user to perform tooling commands, see the Bitnami documentation for more information.

You can also configure the default database. However, it is very important to note that these things get set the FIRST TIME YOU START the service and ONLY THE FIRST TIME.

This means that if you change any of the creds you need to lando destroy and then lando start the service for the changes to take effect. This stands in contrast to the normal lando rebuild method to change config and is a consequence of persisting the database's data directory between rebuilds.

services:
  my-service:
    type: postgres
    creds:
      database: database -> db7
lando destroy -y && lando start

Also note that by default all postgres services have a passwordless postgres user with all permissions. DO NOT ALTER THE PASSWORD OF THE POSTGRES USER.

Due to the way

Using a custom postgres config file

You may need to override our default postgres config with your own custom postgres config.

If you do this you must use a file that exists inside your applicaton and express it relative to your project root as below.

A hypothetical project

./
|-- config
   |-- my-custom.conf
|-- .lando.yml

Landofile's postgres config

services:
  my-service:
    type: postgres
    config:
      database: config/my-custom.conf

Getting information

You can get connection and credential information about your postgres instance by running lando info. It may also be worth checking out our accessing services externally guide.

Example

If you are interested in a working example of this service that we test on every Lando build then check out https://github.com/lando/lando/tree/master/examples/postgres

Additional Reading

Guides and Tutorials

Advanced Usage

Known Issues

Troubleshooting

results matching ""

    No results matching ""