Como Executar a Imagem Docker Aspose.CAD na Função Azure

Pré-Requisitos

  • O Docker deve estar instalado em seu sistema. Para informações sobre como instalar o Docker no Windows ou Mac, consulte os links na seção “Veja Também”.
  • IntelliJ IDEA.
  • Azure Toolkit para IntelliJ.
  • Postman.

Função Azure

Neste exemplo, você cria uma função simples de conversão que converte um arquivo CAD e o salva como uma imagem. O aplicativo pode então ser construído no Docker e executado na Função Azure.

Criando a Função Azure

Para criar o programa da Função Azure, siga os passos abaixo:

  1. Após a instalação do Docker, certifique-se de que ele está usando Contêineres Linux (padrão). Se necessário, selecione a opção Alternar para contêineres Linux no menu do Docker Desktops.

  2. Crie o projeto da Função Azure no IntelliJ IDEA.
    Criar projeto de função azure
    Criar projeto de função azure-final

  3. Ferramentas->Azure->Entrar e selecione a autenticação OAuth 2.0.
    Entrar no Azure

  4. Faça login no navegador.

  5. Selecione o nome da assinatura.

  6. Adicione suporte a docker.
    Adicionar suporte a docker

  7. Edite o DockerFile conforme na seção Configurando um Dockerfile.

  8. Adicione blocos para o repositório aspose.cad no 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. Quando todas as dependências necessárias forem adicionadas, escreva um programa simples que cria uma elipse e a salva como uma imagem:

    public class HttpTriggerFunction {
        /**
         * Esta função escuta no endpoint "/api/HttpExample". Duas maneiras de invocá-la usando o comando "curl" no bash:
         * 1. curl -d "Corpo HTTP" {seu host}/api/HttpExample
         * 2. curl "{seu host}/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("Java HTTP trigger processou uma solicitação.");
    
            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();
            }
        }
    }

Configurando um Dockerfile

O próximo passo é criar e configurar o Dockerfile na pasta raiz do projeto.

  1. No Dockerfile, especifique:
    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"]

O acima é um Dockerfile simples, que contém as seguintes instruções:

  • A imagem SDK a ser usada. O Docker a baixará quando a construção for executada. A versão do SDK é especificada como uma tag.
  • O diretório de trabalho, que é especificado na linha seguinte.
  • O comando para copiar tudo para o contêiner, publicar o aplicativo e especificar o ponto de entrada.

Docker Hub

  1. Login no Docker Hub
  2. Criar repositório público

Construindo e Executando o Aplicativo no Docker

Agora o aplicativo pode ser construído e executado no Docker. Abra seu console favorito, mude o diretório para a pasta com o aplicativo (pasta onde o arquivo da solução e o Dockerfile estão colocados) e execute o seguinte comando:

  1. Comando dockerfile de construção no console

    //exemplo
    docker build -t <nome de usuário>/<nome do repositório> .
    
    docker build -t user/asposefunction .

  2. A primeira vez que você executar este comando, pode demorar mais porque o Docker precisa baixar as imagens necessárias. Após o comando anterior ser concluído, execute o seguinte comando para enviar a imagem para o docker hub.

    //exemplo
    docker push <nome de usuário>/<nome do repositório>:tagname
    
    docker push user/aspose-cad-java:latest

  3. Execute o dockerfile no IDE e após enviar para o docker hub.
    Executar docker no ide

  4. Insira o nome da imagem, conforme no repositório Docker Hub.
    Executar docker no ide-próximo

  5. Aguarde o término.

Azure

  1. Login no Azure.
  2. Escolha os serviços do Azure.
  3. Escolha Função App e crie uma função.
    Botão criar função Azure
  4. Repita as configurações básicas conforme na imagem abaixo.
    Configurações de criar função Azure
  5. Clique em ‘Rever + criar’ -> Criar.
  6. Aguarde a conclusão da implantação.
  7. Clique no botão ‘Ir para o recurso’.
    Botão de recurso
  8. Pare a função aspose-cad-docker-example.
    Parar contêiner
  9. Vá para o menu do centro de implantação e faça as configurações apropriadas.
    Centro de implantação
  10. Salve as configurações
  11. Copie a URL do Webhook das configurações do centro de implantação.
    Webhook url
  12. Vá para o Docker Hub, selecione seu repositório e selecione webhooks.
  13. Cole a ‘Webhook url’ do Azure na URL do webhook do Docker Hub e defina o nome.
    Configurações do webhook no docker
  14. Clique no botão criar.
  15. Volte para a função de visualização do Azure e inicie o contêiner.
    Menu de visualização

Exemplo de Execução

  1. Configurações do Postman.
    Configurações do Postman
  2. Selecione qualquer arquivo DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Clique no botão enviar.
  4. Salve o resultado Salvar resposta

Mais Exemplos

Para mais exemplos de como você pode usar Aspose.CAD no Docker, veja os exemplos.

Veja Também