⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Conteneuriser une application Deno

Prérequis

  • Vous avez un client Git. Les exemples de cette section utilisent un client Git en ligne de commande, mais vous pouvez utiliser n'importe quel client.

Aperçu

Pendant longtemps, Node.js a été l'environnement d'exécution de référence pour les applications JavaScript côté serveur. Cependant, ces dernières années ont vu l'émergence de nouveaux environnements d'exécution alternatifs, y compris Deno. Comme Node.js, Deno est un environnement d'exécution JavaScript et TypeScript, mais il adopte une nouvelle approche avec des fonctionnalités de sécurité modernes, une bibliothèque standard intégrée et un support natif pour TypeScript.

Pourquoi développer des applications Deno avec Docker ? Avoir le choix des environnements d'exécution est passionnant, mais gérer plusieurs environnements et leurs dépendances de manière cohérente entre les environnements peut être délicat. C'est là que Docker s'avère inestimable. L'utilisation de conteneurs pour créer et détruire des environnements à la demande simplifie la gestion des environnements d'exécution et garantit la cohérence. De plus, alors que Deno continue de croître et d'évoluer, Docker aide à établir un environnement de développement fiable et reproductible, minimisant les défis de configuration et rationalisant le flux de travail.

Obtenir l'application exemple

Clonez l'application exemple à utiliser avec ce guide. Ouvrez un terminal, changez de répertoire pour un répertoire dans lequel vous souhaitez travailler, et exécutez la commande suivante pour cloner le dépôt :

$ git clone https://github.com/dockersamples/docker-deno.git && cd docker-deno

Vous devriez maintenant avoir le contenu suivant dans votre répertoire deno-docker.

├── deno-docker/
│ ├── compose.yml
│ ├── Dockerfile
│ ├── LICENSE
│ ├── server.ts
│ └── README.md

Comprendre l'application exemple

L'application exemple est une simple application Deno qui utilise le framework Oak pour créer une API simple qui renvoie une réponse JSON. L'application écoute sur le port 8000 et renvoie un message {"Status" : "OK"} lorsque vous accédez à l'application dans un navigateur.

// server.ts
import { Application, Router } from "https://deno.land/x/[email protected]/mod.ts";

const app = new Application();
const router = new Router();

// Définir une route qui renvoie du JSON
router.get("/", (context) => {
  context.response.body = { Status: "OK" };
  context.response.type = "application/json";
});

app.use(router.routes());
app.use(router.allowedMethods());

console.log("Serveur en cours d'exécution sur http://localhost:8000");
await app.listen({ port: 8000 });

Créer un Dockerfile

Dans le Dockerfile, vous remarquerez que l'instruction FROM utilise denoland/deno:latest comme image de base. C'est l'image officielle de Deno. Cette image est disponible sur Docker Hub.

# Utiliser l'image officielle de Deno
FROM denoland/deno:latest

# Définir le répertoire de travail
WORKDIR /app

# Copier le code du serveur dans le conteneur
COPY server.ts .

# Définir les permissions (facultatif mais recommandé pour la sécurité)
USER deno

# Exposer le port 8000
EXPOSE 8000

# Lancer le serveur Deno
CMD ["run", "--allow-net", "server.ts"]

En plus de spécifier denoland/deno:latest comme image de base, le Dockerfile :

  • Définit le répertoire de travail dans le conteneur à /app.
  • Copie server.ts dans le conteneur.
  • Définit l'utilisateur à deno pour exécuter l'application en tant qu'utilisateur non root.
  • Expose le port 8000 pour autoriser le trafic vers l'application.
  • Lance le serveur Deno en utilisant l'instruction CMD.
  • Utilise l'indicateur --allow-net pour autoriser l'accès réseau à l'application. Le fichier server.ts utilise le framework Oak pour créer une API simple qui écoute sur le port 8000.

Lancer l'application

Assurez-vous d'être dans le répertoire deno-docker. Exécutez la commande suivante dans un terminal pour construire et lancer l'application.

$ docker compose up --build

Ouvrez un navigateur et affichez l'application à http://localhost:8000. Vous verrez un message {"Status" : "OK"} dans le navigateur.

Dans le terminal, appuyez sur ctrl+c pour arrêter l'application.

Lancer l'application en arrière-plan

Vous pouvez lancer l'application détachée du terminal en ajoutant l'option -d . À l'intérieur du répertoire deno-docker, exécutez la commande suivante dans un terminal.

$ docker compose up --build -d

Ouvrez un navigateur et affichez l'application à http://localhost:8000.

Dans le terminal, exécutez la commande suivante pour arrêter l'application.

$ docker compose down

Résumé

Dans cette section, vous avez appris comment vous pouvez conteneuriser et exécuter votre application Deno en utilisant Docker.

Informations connexes :

Prochaines étapes

Dans la section suivante, vous apprendrez comment vous pouvez développer votre application en utilisant des conteneurs.