Document how to make a compose stack out of an existing docker-compose.yml
#5
Labels
No Label
abra
abra-gandi
awaiting-feedback
backups
bug
build
ci/cd
community organising
contributing
coopcloud.tech
democracy
design
documentation
duplicate
enhancement
finance
funding
good first issue
help wanted
installer
kadabra
performance
proposal
question
recipes.coopcloud.tech
security
test
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/organising#5
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Off top:
deploy: labels:
section for Traefiknetworks: proxy
to whichever service(s) will be internet-facingvolumes:
and (probably)secrets:
definition from an existing app.envrc
file and (probably)helpers.sh
to generate secrets(Probably lots more)
entrypoint.sh
to do any initial set-up that relies ondocker-compose run
(e.g. formatrix-synapse
)build:
in stacksIf an image supports loading secrets from environment variables, but not yet from files, e.g. you want
CONFIG_AUTHADMINPASSWORD_FILE=/run/secrets/saml_admin_password
but the image only supportsCONFIG_AUTHADMINPASSWORD=foo
, use a simple custom entrypoint: https://git.autonomic.zone/compose-stacks/mediawiki/src/branch/simplesaml/entrypoint.simplesaml.sh.tmplAdding custom
abra
commands, see e.g. Nextcloud'sabra occ
commandCoöpCloud-ising an app
Example: Matomo web analytics
Tired: Write your own image and compose file
Wired: Use someone else's image (& maybe compose file)
Inspired: Upstream image, someone else's compose file
On fire: Upstream compose file
I'm feeling lazy so, luckily for me, Matomo already has an example compose file in their repository! Let's download and edit it:
Open
compose.yml
in your favourite editor and have a gander 🦢 . There are a few things we're looking for -- full list to come -- but a few things we can immediately see are:3.8
, to make sure we can use all the latest swarm coolnessabra
, so we'll strip outenv_file
./var/www/html
volume definition on L21 is a bit overzealous; it means a copy of Matomo will be stored separately per app instance, which is a waste of space in most cases. We'll narrow it down according to the documentation -- here, the developers have been nice enough to suggestlogs
andconfig
volumes instead, which is a decent startinternal
network for it to communicate with Matomo.deploy.labels
and remove theports:
definition, to tell Traefik to forward requests to Matomo based on hostname and generate an SSL certificate.(I'll also rename the
db
andapp
services tomariadb
andmatomo
respectively, for consistency with our othercompose-stacks
apps.)The resulting
compose.yml
is here: https://git.autonomic.zone/compose-stacks/matomo/src/branch/main/compose.ymlNow, create an
.envrc
file (or call it anything else, but remember to specify the-e
option forabra
):(and, if you're using
.envrc
, remember tosource .envrc
ordirenv allow
)You can create the secrets:
And deploy the app:
abra deploy
Then, open the
DOMAIN
you configured (you might need to wait a while for Traefik to generate SSL certificates) to finish the set-up.Luckily, this container is (mostly) configurable via environment variables -- if we want to auto-generate the configuration we can use a
config
and / or a customentrypoint
(seecompose-stacks/mediawiki
for examples of both).