How to install system packages in an application#

All Divio applications are based on a Dockerfile that starts with base image that includes Linux.

If your application requires particular system packages, you can include them in the Docker image, by listing the commands required to install them - typically, using RUN apt-get - in the Dockerfile.

The commands in the Dockerfile are executed in order, so an appropriate place to put such commands is early on, after FROM - for example, after:

FROM divio/base:1.1-py3.11-slim-bullseye

and before any other commands that might depend on the package.

You should include an apt-get update in the installation commands, and run apt-get with the -y (“Say yes”) option, for example:

RUN apt-get update
RUN apt-get install -y postgresql-client

to install the psql Postgres client.

To rebuild the docker image, installing the new packages:

docker-compose build web

The build output will show the new RUN instructions being executed as part of your build.