Example Postgres Configuration
This guide covers configuring continuous integration pipelines for projects that have a Postgres dependency. If you’re new to Drone please read our Tutorial and build configuration guides first.
Basic Example
In the below example we demonstrate a pipeline that launches a Postgres service container. The database server will be available at database:5432
, where the hostname matches the service container name.
1 kind: pipeline
2 name: default
3
4 steps:
5 - name: test
6 image: postgres:9-alpine
7 commands:
8 - psql -U postgres -d test -h database
9
10 services:
11 - name: database
12 image: postgres:9-alpine
13 environment:
14 POSTGRES_USER: postgres
15 POSTGRES_DB: test
Database Settings
The official Postgres image provides environment variables used at startup to create the default username, password, database and more. Please see the official image documentation for more details.
10 services:
11 - name: database
12 image: postgres
13 environment:
14 POSTGRES_USER: postgres
15 POSTGRES_DB: test
Common Problems
Initialization
If you are unable to connect to the Postgres container please make sure you are giving Postgres adequate time to initialize and begin accepting connections.
1 kind: pipeline
2 name: default
3
4 steps:
5 - name: test
6 image: postgres
7 commands:
8 - sleep 15
9 - psql -U postgres -d test -h database
Incorrect Hostname
You cannot use 127.0.0.1
or localhost
to connect with the Postgres container. If you are unable to connect to the Postgres container please verify you are using the correct hostname, corresponding with the name of the postgres service container.
Bad:
steps:
- name: test
image: postgres
commands:
- sleep 15
- psql -U postgres -d test -h localhost
Good:
steps:
- name: test
image: postgres
commands:
- sleep 15
- psql -U postgres -d test -h database