Comment exécuter l'image Docker Aspose.CAD dans Azure Function

Prérequis

  • Docker doit être installé sur votre système. Pour des informations sur la façon d’installer Docker sur Windows ou Mac, reportez-vous aux liens dans la section “Voir aussi”.
  • IntelliJ IDEA.
  • Azure Toolkit pour IntelliJ.
  • Postman.

Azure Function

Dans cet exemple, vous créez une fonction de conversion simple qui convertit un fichier CAD et le sauvegarde sous forme d’image. L’application peut ensuite être construite dans Docker et exécutée dans Azure Function.

Création de la Fonction Azure

Pour créer le programme de la Fonction Azure, suivez les étapes ci-dessous :

  1. Une fois Docker installé, assurez-vous qu’il utilise des conteneurs Linux (par défaut). Si nécessaire, sélectionnez l’option Passer à des conteneurs Linux dans le menu de Docker Desktop.

  2. Créez un projet de fonction Azure dans IntelliJ IDEA.
    Créer un projet de fonction azure
    Créer un projet de fonction azure-final

  3. Outils->Azure->Se connecter et sélectionner l’authentification OAuth 2.0.
    Connexion Azure

  4. Connectez-vous sur le navigateur.

  5. Sélectionnez le nom de l’abonnement.

  6. Ajoutez le support de Docker.
    Ajoutez le support de Docker

  7. Modifiez le DockerFile comme dans la section Configuration d’un Dockerfile.

  8. Ajoutez des blocs pour le dépôt aspose.cad dans pom.xml.

    <repositories>
        <repository>
    		<id>AsposeJavaAPI</id>
            <name>Aspose Java API</name>
            <url>https://releases.aspose.com/java/repo/</url>
        </repository>
    </repositories>
    
    
    <dependencies>
     <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-cad</artifactId>
        <version>22.3</version>
        <scope>compile</scope>
      </dependency>
    </dependencies>

  9. Une fois toutes les dépendances nécessaires ajoutées, écrivez un simple programme qui crée une ellipse et la sauvegarde sous forme d’image :

    public class HttpTriggerFunction {
        /**
         * Cette fonction écoute à l'endpoint "/api/HttpExample". Deux façons de l'invoquer en utilisant la commande "curl" dans bash :
         * 1. curl -d "Corps HTTP" {votre hôte}/api/HttpExample
         * 2. curl "{votre hôte}/api/HttpExample?name=HTTP%20Query"
         */
        @FunctionName("HttpExample")
        public HttpResponseMessage run(
                @HttpTrigger(
                    name = "req",
                    methods = {HttpMethod.GET, HttpMethod.POST},
                    authLevel = AuthorizationLevel.ANONYMOUS)
                    HttpRequestMessage<Optional<String>> request,
                final ExecutionContext context) throws FileNotFoundException {
            context.getLogger().info("Le déclencheur HTTP Java a traité une demande.");
    
            try{
                String body = request.getBody().get();
                InputStream targetStream = new ByteArrayInputStream(body.getBytes());
    
                CadImage image = (CadImage)Image.load(targetStream);
                {
                    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
                    rasterizationOptions.setPageWidth(1200);
                    rasterizationOptions.setPageHeight(1200);
    
                    ImageOptionsBase options = new PngOptions();
                    options.setVectorRasterizationOptions(rasterizationOptions);
    
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
    
                    image.save(out, options);
    
                    return request.createResponseBuilder(HttpStatus.OK)
                            .header("Content-type", "image/png")
                            .header("Content-Disposition", "attachment;filename=filename.png")
                            .body(out.toByteArray()).build();
                }
            }
            catch (Exception e)
    		{
                return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body(e.getMessage()).build();
            }
        }
    }

Configuration d’un Dockerfile

L’étape suivante consiste à créer et configurer le Dockerfile dans le dossier principal du projet.

  1. Dans le Dockerfile, spécifiez :
    FROM mcr.microsoft.com/azure-functions/java:3.0-java8-build AS installer-env
    
    COPY . /src/java-function-app
    RUN cd /src/java-function-app && \
        mkdir -p /home/site/wwwroot && \
        mvn clean package && \
        cd ./target/azure-functions/ && \
        cd $(ls -d */|head -n 1) && \
        cp -a . /home/site/wwwroot
    
    FROM mcr.microsoft.com/azure-functions/java:3.0-java8-appservice
    
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
        AzureFunctionsJobHost__Logging__Console__IsEnabled=true
    
    COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

Le fichier ci-dessus est un Dockerfile simple, qui contient les instructions suivantes :

  • L’image SDK à utiliser. Docker la téléchargera lorsque la construction sera exécutée. La version de SDK est spécifiée comme une balise.
  • Le répertoire de travail, qui est spécifié à la ligne suivante.
  • La commande pour tout copier dans le conteneur, publier l’application et spécifier le point d’entrée.

Docker Hub

  1. Connectez-vous à Docker Hub
  2. Créez un dépôt public

Construction et exécution de l’application dans Docker

Maintenant, l’application peut être construite et exécutée dans Docker. Ouvrez votre terminal préféré, changez de répertoire pour le dossier contenant l’application (dossier où le fichier de solution et le Dockerfile sont placés) et exécutez la commande suivante :

  1. Commande de construction du dockerfile dans la console

    //exemple
    docker build -t <nom d'utilisateur>/<nom du dépôt> .
    
    docker build -t user/asposefunction .

  2. La première fois que vous exécutez cette commande, elle peut prendre plus de temps car Docker doit télécharger les images nécessaires. Une fois la commande précédente terminée, exécutez la commande suivante pour pousser l’image vers Docker Hub.

    //exemple
    docker push <nom d'utilisateur>/<nom du dépôt>:tagname
    
    docker push user/aspose-cad-java:latest

  3. Exécutez le dockerfile dans l’IDE et après poussez vers Docker Hub.
    Exécutez docker dans ide

  4. Entrez le nom de l’image, comme dans le dépôt Docker Hub.
    Exécutez docker dans ide-next

  5. Attendez la fin.

Azure

  1. Connectez-vous à Azure.
  2. Choisissez les services Azure.
  3. Choisissez Fonction App et créez une fonction.
    Bouton de création de fonction Azure
  4. Répétez les paramètres de base comme sur l’image ci-dessous.
    Paramètres de création de fonction Azure
  5. Cliquez sur ‘Revue + créer’ -> Créer.
  6. Attendez que le déploiement se termine.
  7. Cliquez sur le bouton ‘Aller à la ressource’.
    Bouton de ressource
  8. Arrêtez la fonction aspose-cad-docker-example.
    Arrêter le conteneur
  9. Allez dans le menu du centre de déploiement et effectuez les paramètres appropriés.
    Centre de déploiement
  10. Enregistrez les paramètres
  11. Copiez l’URL du Webhook à partir des paramètres du centre de déploiement.
    URL du Webhook
  12. Allez sur Docker Hub, sélectionnez votre dépôt et sélectionnez webhooks.
  13. Collez l’URL du Webhook de Azure dans l’URL webhook de Docker Hub et définissez le nom.
    Paramètres du Webhook dans Docker
  14. Cliquez sur le bouton de création.
  15. Retournez à l’aperçu de la fonction Azure et démarrez le conteneur.
    Menu daperçu

Exemple d’exécution

  1. Paramètres de Postman.
    Menu daperçu
  2. Sélectionnez n’importe quel fichier DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Cliquez sur le bouton d’envoi.
  4. Sauvegardez le résultat Sauvegarder la réponse

Plus d’exemples

Pour plus d’exemples de la manière dont vous pouvez utiliser Aspose.CAD dans Docker, consultez les exemples.

Voir aussi