PostgresV3 is a pure Smalltalk
implementation of the PostgreSQL v3 wire protocol. I've modified
PostgresV3-Core to do parameter binding and added PostgresV3-DBAPI, a very
simple client API.
In PostgresV3-DBAPI, there are a number of examples in PG3ExampleClient.
These examples require a PostgreSQL server loaded with the Sakila database.
To set that up, firstly, download the
Sakila database files.
Place the PostgreSQL files in ~/data, say.
The quickest way to get PostgreSQL up and running is by Docker. Here's my
docker-compose file that uses the official Postgres-11 image. Data is kept
in a separate volume 'pgdata'.
Bring up PostgreSQL, create roles, load the Sakila data, assign
In a fresh Squeak image - I'm using 5.2 - evaluate in a workspace:
In a fresh Pharo image - I'm using the latest 7.0 pre-release - evaluate in
As this is a pure Smalltalk implementation, it should also work in earlier
versions of Squeak and Pharo.
Blog content is held in a Fossil repository with a running Fossil server to support content pushing.
Each component runs in a Docker container.
Caddy is an open source
HTTP/2 web server.
a plugin for Caddy enabling Docker integration - when an appropriately
configured Docker container or service is brought up, caddy-docker-proxy
generates a Caddy site specification entry for it and reloads Caddy. With
Caddy's built-in Let's Encrypt functionality, this allows the new
container/service to run over HTTPS seamlessly.
Below is my docker-compose.yml for Caddy. I built Caddy with the
caddy-docker-proxy plugin from source and named the resulting Docker image
samadhiweb/caddy. The Docker network caddynet is the private network for
Caddy and the services it is proxying. The Docker volume caddy-data is for
persistence of data such as cryptographic keys and certificates.
Here's the docker-compose.yml snippet for the blog engine:
Of interest are the caddy.* labels from which caddy-docker-proxy generates
the following in-memory Caddy site entry:
Also note the ulimits section, which sets the suggested limits for the
Pharo VM heartbeat thread. These limits must be set in the docker-compose
file or on the docker command line - copying a prepared file into
/etc/security/limits.d/pharo.conf does not work when run in a Docker