Using PostgreSQL container with PostGIS support provided by mdillon/postgis.
- Copy
docker-compose.postgres.yaml
to your project - Copy the full
commands/postgres
directory to your project's.ddev/commands
directory. For examplecp -r commands/postgres /.ddev/commands
- (optional) Update your config.yaml file to support auto-import/auto-export (see below)
Connect to postgres
host/db server from within the web container with:
Host: ddev-<projectname>-postgres
User: db
Password: db
Database: db
For external access, use the port used in your docker-compose.postgres.yaml
and 127.0.0.1
as host.
When using multiple project with PostgreSQL support, remember to update your docker-compose.postgres.yaml
to use different ports:
ports:
- <EXTERNAL_PORT>:5432
Two new ddev
commands are provided:
ddev pgsql_export
: Usepg_dump
to exportdb
to.ddev/pgsql-db/postgresql.db.sql
ddev pgsql_import
: Usepgsql
to import.ddev/pgsql-db/postgresql.db.sql
intodb
- Note that this must be executed with an empty database.
Example config.yaml
hooks configuration to automatically import/export the db
table:
# Add psql to your webserver
webimage_extra_packages: [postgresql-client]
# Automatically import and export PostgreSQL database on ddev start and stop
hooks:
pre-stop:
- exec-host: ddev pgsql_export
post-start:
- exec-host: ddev pgsql_import
There are also another non-plain-text formats that pg_dump
can generate, and you might need to work with them. If that's the case, there is also
a ddev pg_restore
command that will restore .ddev/pgsql-db/postgresql.db.dump
into db
.
The postgres
image support postgis
, but you will need to create the extension before using it:
CREATE EXTENSION IF NOT EXISTS `postgis`;
Typo3 CMS supports PostgreSQL natively, but the Typo3 Installer has issues with the default db
database because the postgis
extension is enabled per default.
You will need to disable the extension before the installation:
DROP EXTENSION postgis CASCADE;
It’s safe to re-enable postgis
after the installation is complete.
- If your project only uses a Postgres database, you can disable the MySql & MariaDb services.
- Run the following command from your project root.
ddev config --omit-containers db
- Alternatively, you can update your project's
.ddev/config.yaml
directly by updating the following line:
omit_containers: [db]
- See .ddev/config.yaml Options for additional notes.
Future enhancements (PR's welcome here) include:
- Provide interactive custom commands to interact with the
postgres
utility in the container interactively. - Consider changing suggested import/export hooks into "exec" hooks with "service: postgres" instead of running
ddev pg*
on the host.