Introduction
Matomo (formerly known as Piwik) is an open source web analytics application that runs on PHP and a MySQL database, which I’ve been using instead of Google Analytics.
This is the configuration I use to deploy it as described here.
I’m using the official matomo
and mariadb
images and don’t need to build anything, so all I need to deploy the app is a docker-compose.yml
file and a .env
file.
The issue
I recently ran into the following error when trying to deploy remotely using docker-compose
:
ERROR: Secsh channel 14 open FAILED: open failed: Connect failed
The issue is that the default SSH connections allowed is set to 10 and the command I was running was trying to use more connections then that.
The issue
I recently ran into an issue after installing docker
and adding it to the plugins section in my .zshrc
file, autocomplete just wouldn’t work (even though oh-my-zsh
plugin installation is so straightforward).
First make sure your syntax is OK, plugins should be separated by a space only and no commas:
plugins=(git docker docker-compose)
After reloading my zshrc
file with source ~/.zshrc
it still didn’t work. I had to delete ZSH’s .zcompdump
file:
Introduction
These are the configurations I use for a Phoenix 1.4 app to deploy it to production using docker-compose contexts. If you don’t have a server ready or docker
and docker-compose
installed on your local dev machine then have a read through that blog post first.
For this build I’m not going to dockerize NGINX as I have it installed on the server.
Create a Dockerfile
Step one is to create a Dockerfile
in the root directory of your project. For this build I’ll be using elixir:X.X.X-alpine image
. alpine
is a much slimmer Linux docker image and will reduce our overall image sizes.
Introduction
In this post we’ll go over setting up a DigitalOcean Droplet to run multiple dockerized apps which we’ll deploy to production using docker-compose
and docker contexts. We’ll also set up NGINX reverse proxies for the apps we want to expose externally.
Using docker-compose
with contexts lets us run builds and deployments to remote servers from our local dev machine. This feature is available to docker-compose
starting with release 1.26.0-rc2
.
Note: this feature is relatively easy to use, especially if you’ve used docker-contexts
before however is more suited for deploying small/hobby apps to a single server. There will be some downtime as you’re releasing new builds (generally a few seconds) so if you require zero downtime deployments, rolling updates and multiple server orchestration then you should look at docker’s swarm feature or kubernetes.
Update: I’ve now published a better way of deploying multiple apps to a single DigitalOcean droplet. Check it out here: Deploying multiple apps to a single DigitalOcean droplet using Dokploy.