I've recently made some fairly substantial changes to the container used throughout the Placement Container Playground series, so I figure an update is in order. The previous update was Playground 7.
The main changes involve the management of configuration. Throughout this process I've been trying to align myself with what are considered best practices for containers, using various blog posts, such as 12 Fractured Apps as guidance. The goal has always been a container that is as lightweight as possible, with a single responsibility, while maintaining flexibility and immutability in the same container.
To that end, the container has long had a startup.sh
entrypoint
that is responsible for creating a local configuration for the
service based on external environment variables, and then starting
the (non-configurable) uwsgi process. The changes in config mainly
adjust database and authentication settings.
That's fine as far as it goes, but having a configuration file at all and having to translate environment variables into it is a bit weak. So now the server process within the container uses environment variables directly.
This required new functionality in
oslo.config
that I wrote and was released in version 6.7.0
. That allows
sourcing configuration values from the environment in a predictable
way.
Doing this revealed that all the functionality for using the container with keystone was broken. This is now fixed and the README has been updated accordingly.
Also, in the interim, the placement service moved to its own
repo, requiring
a few other updates in the Dockerfile
and the README
.
The container continues to be built semi regularly on dockerhub based on when new functionality shows up in placement, and is automatically tested by placecat.