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/).
 | 
					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
 | 
					- Tired: Write your own image and compose file
 | 
				
			||||||
- Wired: Use someone else's image (& maybe compose file)
 | 
					- Wired: Use someone else's image (& maybe compose file)
 | 
				
			||||||
- Inspired: Upstream image, someone else's compose file
 | 
					- Inspired: Upstream image, someone else's compose file
 | 
				
			||||||
- On fire: Upstream 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
 | 
					mkdir matomo && cd matomo
 | 
				
			||||||
wget https://raw.githubusercontent.com/matomo-org/docker/master/.examples/apache/docker-compose.yml -O compose.yml
 | 
					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
 | 
					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`.
 | 
					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).
 | 
					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
 | 
					Depending on whether you defined any extra environment variables -- we didn't so
 | 
				
			||||||
LETS_ENCRYPT_ENV=production
 | 
					far, in this example -- you might want to run `abra app mygreatapp config` to
 | 
				
			||||||
 | 
					check the configuration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECRET_DB_PASSWORD_VERSION=v1
 | 
					Otherwise, or once you've done that, go ahead and deploy the app:
 | 
				
			||||||
SECRET_DB_ROOT_PASSWORD_VERSION=v1
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					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).
 | 
					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