Qu’est-ce que Dokku ?
- Dokku est une Platform as a Service (PaaS) open source qui s’exécute sur un seul serveur
- Similaire à Heroku, mais détenue par l’utilisateur
- Besoin d’une plateforme serverless économique et facile à utiliser
- Exploitation d’un serveur Dokku sur un VPS à 7 $/mois chez OVHcloud
Principales fonctionnalités de Dokku
- Facile à utiliser (similaire à Heroku)
- Gestion automatique des certificats SSL via Let’s Encrypt
- Prise en charge de l’authentification basique pour protéger un site par mot de passe
- Possibilité d’augmenter ou réduire l’échelle avec une seule commande
- Flexibilité permettant de gérer diverses applications comme Node, Python, etc.
- Déploiement facile avec des commandes git
Exemple minimal avec Dokku
Déployer une application avec un conteneur Docker
- Placer le
Dockerfile à la racine du dépôt git
- Utiliser le script
entrypoint.sh pour exécuter l’application en local ou dans un conteneur Docker
- Créer l’application sur l’hôte Dokku
- Ajouter l’hôte Dokku comme remote en local, puis pousser
FROM python:3.10
COPY . /app
WORKDIR /app
RUN pip install .
WORKDIR /app/
ENTRYPOINT ["./entrypoint.sh"]
#!/bin/bash
exec uvicorn main:app --port "$PORT" --host 0.0.0.0
dokku apps:create myapp
git remote add dokku dokku@dokku:myapp
git push dokku main
Déployer un site statique
- Avec Dokku, il est possible de déployer facilement un site statique depuis un dépôt GitHub privé et de le protéger par mot de passe
- Définir la variable d’environnement
NGINX_ROOT pour que NGINX serve le site statique
- Installer et configurer le plugin d’authentification basique
dokku apps:create mysite
dokku config:set static-site NGINX_ROOT=_site
sudo dokku plugin:install https://github.com/dokku/dokku-http-auth.git
sudo chmod +x /home/dokku
touch .static
echo BUILDPACK_URL=https://github.com/dokku/buildpack-nginx > .env
git remote add dokku dokku@dokku:mysite
git push dokku main
dokku http-auth:enable mysite <username> <password>
SSL / HTTPS
- Il est possible de configurer HTTPS avec le plugin Let’s Encrypt
- Si vous utilisez Cloudflare, il est plus simple de le laisser gérer cela
Déploiement avec GitHub Actions
- Il est possible de déployer automatiquement des applications Dokku avec GitHub Actions
- Exemple de workflow GitHub Action
name: CI
on:
workflow_dispatch:
push:
branches: [main]
jobs:
deploy-dokku:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install SSH key
run: |
echo "${{ secrets.DOKKU_SSH_PRIVATE_KEY }}" > private_key.pem
chmod 600 private_key.pem
- name: Add remote and push
run: |
git remote add dokku dokku@rechat.co:llm-eval
GIT_SSH_COMMAND="ssh -i private_key.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git push dokku main -f
Autres conseils
- Exécuter des commandes à distance
- Invalider le cache Docker
- Rebuild sans push
ssh dokku@rechat.co apps:list
ssh dokku@rechat.co repo:purge-cache llm-eval
ssh dokku@rehcat.co ps:rebuild llm-eval
Pourquoi ai-je écrit cet article ?
- Je l’ai écrit parce que je devais retrouver les détails à chaque déploiement d’une nouvelle application
- J’espère que cela sera utile à d’autres
Résumé GN⁺
- Dokku est une plateforme PaaS open source économique et facile à utiliser
- Elle fournit des fonctionnalités permettant de déployer et gérer facilement diverses applications
- Le déploiement automatique est possible avec des outils comme GitHub Actions
- C’est encore plus pratique avec des services comme Cloudflare
- Parmi les autres projets offrant des fonctionnalités similaires figurent Heroku, Fly.io, etc.
1 commentaires
Avis Hacker News
Prend récemment beaucoup de plaisir à utiliser Dokploy
Après avoir étudié plusieurs solutions de type « Heroku auto-hébergé », a choisi Dokku
Il peut y avoir des problèmes en utilisant un nouveau logiciel, mais ce n’est pas le cas avec Dokku
Dokku rend la configuration HTTPS facile via le plugin Let's Encrypt
A utilisé Dokku avant de passer à la construction d’images Docker et au déploiement avec Swarm
La popularité de Coolify est en hausse et permet aux organisations de toute taille d’exécuter facilement des logiciels auto-hébergés gratuitement
Dokku est un produit remarquable et son fondateur est très humble et serviable
Se demande ce qui est utilisé comme stockage de fichiers/objets pour ce type d’infrastructure
N’a pas eu une bonne expérience avec Dokku
Il est possible d’utiliser traefik + podman standard + l’intégration systemd