Discourse
- By Arturo Enrique Seijas Fernández
Channel | Version | Revision | Published | Runs on |
---|---|---|---|---|
latest/stable | 6 | 6 | 10 Feb 2022 | |
latest/edge | 15 | 15 | 05 Jan 2023 |
juju deploy discourse-k8s
You will need Juju 2.9 to be able to run this command. Learn how to upgrade to Juju 2.9.
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
The charm is configured by default to deploy with discoursecharmers/discourse:v2.7.10-20.04_edge
from Dockerhub, which is built from a Launchpad OCI Recipe. This is a docker image for Discourse with no extra plugins configured. A separate Launchpad OCI Recipe is used to build an image with the markdown and SAML plugins included, which can be used instead via discoursecharmers/discourse-markdown-saml:v2.7.10-20.04_edge
.
Testing Image Changes Locally
After making any changes to the image
directory, run make build-image && make push-image-local-registry
. Then deploy the image in question using the discourse_image
config option set to the location indicated by that command.
Building Other Configured Images
If you want to customise the image in any way, take a look at how image/Dockerfile
is constructed to show how other plugins can be configured. Essentially that file builds a basic docker image for Discourse and then builds two versions based on that. We then use the IMAGE_TYPE
variable to determine which actual image to generate. If you want to use an image with the Markdown and SAML plugins configured, you can simply run:
docker build --build-arg CONTAINER_APP_VERSION='v2.7.10' --build-arg IMAGE_TYPE=markdown-saml -t discourse-markdown-saml:v2.7.10 image/
This image type is also automatically pushed to dockerhub via a Launchpad OCI Reciple build, however, so you can use it without building yourself just by using discoursecharmers/discourse-markdown-saml:v2.7.10
as your discourse_image
juju config option when deploying the charm.
Creating Custom Images
If you want to generate an image with other plugins configured, take a look at image/Dockerfile
for examples. Let’s say you wanted to create an image with the “Markdown” plugin, but not “SAML”. You would modify image/Dockerfile
as follows:
$ git status -v
On branch custom-plugins
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: image/Dockerfile
diff --git a/image/Dockerfile b/image/Dockerfile
index d314bb7..dcd710f 100644
--- a/image/Dockerfile
+++ b/image/Dockerfile
@@ -80,6 +80,14 @@ RUN echo "saml_full_screen_login = true" >> /srv/scripts/assets/discourse.conf.t
RUN echo "markdown-saml image complete"
+FROM base-image AS markdown
+
+RUN cd ${CONTAINER_APP_ROOT}/app/plugins && git clone https://github.com/canonical-web-and-design/discourse-markdown-note.git
+RUN chown -R ${CONTAINER_APP_USERNAME}:${CONTAINER_APP_GROUP} ${CONTAINER_APP_ROOT}/app/plugins
+RUN cd ${CONTAINER_APP_ROOT}/app && su -s /bin/bash -c 'bin/bundle install' ${CONTAINER_APP_USERNAME}
+
+RUN echo "markdown image complete"
+
# Build the final image based on the IMAGE_TYPE specified.
FROM ${IMAGE_TYPE} AS final
# Redeclare IMAGE_TYPE variable so it can be referenced inside this build
You could then run the following to generate this image:
docker build --build-arg CONTAINER_APP_VERSION='v2.7.10' --build-arg IMAGE_TYPE=markdown -t discourse-markdown:v2.7.10 image/
Help us improve this documentation
Most of this documentation can be collaboratively discussed and changed on the respective topic in the doc category of the Charmhub forum. See the documentation guidelines if you’d like to contribute.