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:
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.
Crie o projeto da Função Azure no IntelliJ IDEA.
Ferramentas->Azure->Entrar e selecione a autenticação OAuth 2.0.
Faça login no navegador.
Selecione o nome da assinatura.
Adicione suporte a docker.
Edite o DockerFile conforme na seção Configurando um Dockerfile.
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>
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.
- 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
- Login no Docker Hub
- 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:
Comando dockerfile de construção no console
//exemplo docker build -t <nome de usuário>/<nome do repositório> . docker build -t user/asposefunction .
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
Execute o dockerfile no IDE e após enviar para o docker hub.
Insira o nome da imagem, conforme no repositório Docker Hub.
Aguarde o término.
Azure
- Login no Azure.
- Escolha os serviços do Azure.
- Escolha Função App e crie uma função.
- Repita as configurações básicas conforme na imagem abaixo.
- Clique em ‘Rever + criar’ -> Criar.
- Aguarde a conclusão da implantação.
- Clique no botão ‘Ir para o recurso’.
- Pare a função aspose-cad-docker-example.
- Vá para o menu do centro de implantação e faça as configurações apropriadas.
- Salve as configurações
- Copie a URL do Webhook das configurações do centro de implantação.
- Vá para o Docker Hub, selecione seu repositório e selecione webhooks.
- Cole a ‘Webhook url’ do Azure na URL do webhook do Docker Hub e defina o nome.
- Clique no botão criar.
- Volte para a função de visualização do Azure e inicie o contêiner.Pode levar alguns minutos para a função iniciar.
Exemplo de Execução
- Configurações do Postman.
- Selecione qualquer arquivo DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
- Clique no botão enviar.
- Salve o resultado
Mais Exemplos
Para mais exemplos de como você pode usar Aspose.CAD no Docker, veja os exemplos.