Aller au contenu principal

Construire un environnement de bureau isolé pour Slack avec Docker

Salut ! Dans cet article, nous allons explorer comment construire un environnement d'exécution isolé et portable pour l'application de bureau Slack en utilisant des conteneurs Docker.

Pourquoi isoler Slack ?

Slack est un outil très populaire pour la collaboration et la communication d'équipe. C'est génial pour garder tout le monde dans la boucle, mais parfois, il peut tourner en arrière-plan pendant longtemps. Cela peut parfois entraîner des conflits avec d'autres applications sur votre système. D'un autre côté, les mises à jour, les plugins, les fichiers de configuration de Slack, etc., peuvent également "polluer" l'environnement du système hôte. Cela peut être un peu embêtant !

Exécuter Slack dans un conteneur Docker peut l'isoler efficacement, permettant ainsi :

  • D'éviter les conflits de ressources avec d'autres applications
  • D'empêcher la pollution de l'environnement système
  • D'obtenir un environnement d'exécution portable et cohérent
  • De faciliter la sauvegarde et la restauration des configurations

Dockerfile

Nous allons construire l'image du conteneur Slack basée sur le système léger Debian 11 (Bullseye). Voici les étapes clés :

  1. Installer les packages logiciels de base : apt-transport-https, ca-certificates, curl, gnupg, etc., pour préparer l'ajout de dépôts et l'installation.

  2. Configurer l'environnement linguistique : Définir la locale par défaut sur en_US.UTF-8.

  3. Ajouter le dépôt Slack : Obtenir la clé de dépôt à partir des sources officielles de Slack et écrire l'adresse source dans sources.list.

  4. Installer Slack : En utilisant la commande apt, installer le paquet slack-desktop et ses dépendances d'exécution en fonction de la source configurée.

  5. Définir le point d'entrée : Définir /usr/lib/slack/slack comme commande d'exécution par défaut pour le conteneur.

Le script Dockerfile complet est le suivant :

FROM debian:bullseye-slim

ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8

RUN apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
locales \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*

RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen en_US.utf8 \
&& /usr/sbin/update-locale LANG=en_US.UTF-8

# Ajouter le dépôt debian de Slack
RUN curl -sSL https://packagecloud.io/slacktechnologies/slack/gpgkey | apt-key add -
RUN echo "deb https://packagecloud.io/slacktechnologies/slack/debian/ jessie main" > /etc/apt/sources.list.d/slacktechnologies_slack.list

RUN apt-get update && apt-get -y install \
libasound2 \
libgtk-3-0 \
libx11-xcb1 \
libxkbfile1 \
slack-desktop \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/usr/lib/slack/slack"]

Exécuter le conteneur Slack

Pour exécuter l'image construite, vous pouvez utiliser la commande suivante :

docker run --rm -it \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
--device /dev/snd \
--device /dev/dri \
--device /dev/video0 \
--group-add audio \
--group-add video \
-v "${HOME}/.slack:/root/.config/Slack" \
--ipc="host" \
--name slack \
jess/slack

Cette commande effectue les mappages et configurations suivants :

  • Mapper les informations de fuseau horaire de l'hôte vers le conteneur
  • Partager le socket Unix X11 de l'hôte, permettant au conteneur d'exécuter des applications GUI
  • Définir la variable d'environnement DISPLAY du conteneur pour se connecter au serveur X de l'hôte
  • Exposer l'audio, la vidéo et d'autres périphériques au conteneur
  • Mapper le répertoire .slack de l'utilisateur actuel vers le conteneur pour le stockage des configurations et du cache
  • Exécuter le conteneur dans l'espace de noms IPC de l'hôte, permettant l'utilisation du serveur X

De cette façon, vous pouvez exécuter en toute sécurité l'application de bureau Slack dans un conteneur isolé et personnalisable.

Résumé

Docker est un excellent moyen de découpler les applications de niveau bureau comme Slack du système hôte. Avec des constructions automatiques basées sur Dockerfiles, vous pouvez être sûr que Slack s'exécutera dans un environnement cohérent et portable, quel que soit votre environnement local.