I would like to use Plone 6 with the Volto frontend for a personal website, and have got the nginx, Frontend, Backend container example working behind TLS/SSL as I describe here. I’m having more difficulty than I expected changing that recipe in order to mix in several community-developed addons. Specifying particular addons using an ADDONS environment variable doesn’t seem to work.
I realize the alternative is to Install Plone from its packages, and have explored that enough to try several addons. I am experiencing two problems with this approach.
First, the solutions I found for getting the containers-based site working behind TLS/SSL are not working, and it’s a whole new system to learn to solve them anew.
More daunting than that, I want to continue to use
docker compose to build and deploy my system and I haven’t got a start on what it would take to containerize the packages-based build.
The combination of these two lead me to hope I just missed a way to include Volto addons in the container build.
So here are the questions with which I’d appreciate help:
- Is there an intended way to include Volto addons in the
plone/plone-frontend deployment of the nginx, Frontend, Backend container example?
- If not, is there a simple way to change the
plone/plone-frontend machinery to enable easy addition of Volto addons? (I see ”--skip-addons in the project Dockerfile. Would omitting that get the ADDONS environment variable to have the effect I want? If so, is there a reason to not remove it? If not, I will be happy to submit a PR. I’m going to experiment with that while waiting for guidance.)
- If both 1. and 2. are not options, is there guidance for containerizing the result of the Install Plone from its packages method? This would make figuring out how to get that installation working behind TLS. (I guess the GitHub - plone/plone-frontend: Plone frontend Docker images using Node 16. constitutes such a build, so it’s looking like the basis of an answer to this question as well as 2.)
Once again replying to my own posting, I think I have an answer to my questions.
I gleaned how to build a plone-frontend container with my selection of addons built in. I started with a clone of the GitHub - plone/plone-frontend: Plone frontend Docker images using Node 16. repository, and found in Érico Andrei's GitHub - collective/plone6-local-demo: Repository used for local demos of Plone 6 with a Dockerfile that has lines specifying addons for the Docker Volto image being constructed. So I can new create a Docker image containing Volto with whatever addons I choose.
I also realized that wiring the addons into the image makes a lot more sense than mixing them in every time I start the site. It provides assurance against occasions when access to specific addons or specific versions of an addon is unavailable.
So I guess using those
--addon clauses in the GitHub - plone/plone-frontend: Plone frontend Docker images using Node 16.
Dockerfile is a good way to go. Once I have the image I can incorporate it in the
docker compose scheme for running the site behind https/TLS, which I describe here. I welcome suggestions about ways to improve this arrangement, but think I’m ready to actually build and start populating my site!
I think the plone-frontend dockerfile should be enhanced to allow
addons as an ARG.
I have successfully built a Docker image with various addons mixed in. (Here's a version of the Dockerfile that does that.) But I haven't figured out how to configure the image build so the resulting image looks for the ADDONS environment variable, or takes an "--addon" argument, or anything like that. I thought that the
plone/plone-frontend was supposed to do that, but haven't gotten it to work.
Being able to mix the addons into my Docker image is adequate for my purposes. It would be handy to be able to specify more addons when invoking the container in order to expedite trying new ones, so I'm quite interested in how to solve that as well. But I'm happy I can move forward with building my site, including whatever addons I need, and love that it's all packaged as containers and container images, so I can deploy it all using Docker.
Now you probably do not need this any longer.
For the records, there is Cookiecutter Plone Starter which helps getting your environment bootstrapped - including a custom
frontend container build.