forked from toolshed/docs.coopcloud.tech
		
	Update packager guide
This commit is contained in:
		@ -6,19 +6,32 @@ title: Packager guide
 | 
			
		||||
 | 
			
		||||
Let's take as an example, [Matomo web analytics](https://matomo.org/).
 | 
			
		||||
 | 
			
		||||
We'll be making a Docker "swarm-mode" `compose.yml` file.
 | 
			
		||||
 | 
			
		||||
- 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:
 | 
			
		||||
I'm feeling lazy so, luckily for me, Matomo already has an example compose file in their repository.
 | 
			
		||||
 | 
			
		||||
Like a lot of compose files, it's intended for use with `docker-compose`, instead of "swarm mode", but it should be a good start.
 | 
			
		||||
 | 
			
		||||
First, let's create a directory with the files we need:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
abra recipe create matomo
 | 
			
		||||
cd ~/.abra/apps/matomo
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Then, let's download and edit the `docker-compose.yml` file:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
mkdir matomo && cd matomo
 | 
			
		||||
wget https://raw.githubusercontent.com/matomo-org/docker/master/.examples/apache/docker-compose.yml -O compose.yml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Open the `compose.yml` in your favourite editor and have a gander :swan: . There are a few things we're looking for -- full list to come -- but a few things we can immediately see are:
 | 
			
		||||
Open the `compose.yml` in your favourite editor and have a gander 🦢. There are a few things we're looking for -- full list to come -- but some immediate changes could be:
 | 
			
		||||
 | 
			
		||||
1. Let's bump the version to `3.8`, to make sure we can use all the latest swarm coolness
 | 
			
		||||
2. We load environment variables separately via [abra](/overview/#command-line-tool), so we'll strip out `env_file`.
 | 
			
		||||
@ -29,16 +42,29 @@ Open the `compose.yml` in your favourite editor and have a gander :swan: . There
 | 
			
		||||
 | 
			
		||||
The resulting `compose.yml` is available [here](https://git.autonomic.zone/coop-cloud/matomo/src/branch/main/compose.yml).
 | 
			
		||||
 | 
			
		||||
Now, create an `.env` file (or call it anything else, but remember to specify the `-e` option for `abra`):
 | 
			
		||||
!!! note "Running Co-op Cloud server required!"
 | 
			
		||||
 | 
			
		||||
    The rest of this guide assumes you have a Co-op Cloud server going -- we'll use `swarm.example.com`, but replace it with your own server address.
 | 
			
		||||
 | 
			
		||||
    Head over to [the deployment guide](./deploy.md) if you need help setting one up.
 | 
			
		||||
 | 
			
		||||
Now, we're ready to create a testing instance of Matomo:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
TYPE=matomo
 | 
			
		||||
abra app new matomo --secrets \
 | 
			
		||||
 --domain matomo.swarm.example.com \
 | 
			
		||||
 --server swarm.example.com \
 | 
			
		||||
 --app-name mygreatapp
 | 
			
		||||
 ```
 | 
			
		||||
 | 
			
		||||
DOMAIN=matomo.example.com
 | 
			
		||||
LETS_ENCRYPT_ENV=production
 | 
			
		||||
Depending on whether you defined any extra environment variables -- we didn't so
 | 
			
		||||
far, in this example -- you might want to run `abra app mygreatapp config` to
 | 
			
		||||
check the configuration.
 | 
			
		||||
 | 
			
		||||
SECRET_DB_PASSWORD_VERSION=v1
 | 
			
		||||
SECRET_DB_ROOT_PASSWORD_VERSION=v1
 | 
			
		||||
Otherwise, or once you've done that, go ahead and deploy the app:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
abra app mygreatapp 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 custom `entrypoint` (see [`coop-cloud/mediawiki`](https://git.autonomic.zone/coop-cloud/mediawiki) for examples of both).
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user