Jak uruchomić obraz Docker Aspose.CAD w Azure Function

Wymagania wstępne

  • Docker musi być zainstalowany na twoim systemie. Aby uzyskać informacje, jak zainstalować Docker na Windows lub Mac, odwołaj się do linków w sekcji „Zobacz także”.
  • IntelliJ IDEA.
  • Azure Toolkit dla IntelliJ.
  • Postman.

Azure Function

W tym przykładzie tworzysz prostą funkcję konwersji, która konwertuje plik CAD i zapisuje go jako obraz. Następnie aplikację można zbudować w Dockerze i uruchomić w Azure Function.

Tworzenie funkcji Azure

Aby utworzyć program funkcji Azure, wykonaj poniższe kroki:

  1. Po zainstalowaniu Dockera upewnij się, że używa kontenerów Linux (domyślnie). W razie potrzeby wybierz opcję Przełącz do kontenerów Linux z menu Docker Desktop.

  2. Utwórz projekt funkcji Azure w IntelliJ IDEA.
    Utwórz projekt funkcji Azure
    Utwórz projekt końcowy funkcji Azure

  3. Narzędzia->Azure->Zaloguj się i wybierz uwierzytelnianie OAuth 2.0.
    Zaloguj się do Azure

  4. Zaloguj się w przeglądarce.

  5. Wybierz nazwę subskrypcji.

  6. Dodaj wsparcie dla Dockera.
    Zaloguj się do Azure

  7. Edytuj plik DockerFile jak w sekcji Konfiguracja Dockerfile.

  8. Dodaj bloki dla repozytorium aspose.cad w 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. Gdy wszystkie wymagane zależności są dodane, napisz prosty program, który tworzy elipsę i zapisuje ją jako obraz:

    public class HttpTriggerFunction {
        /**
         * Ta funkcja nasłuchuje na punkcie końcowym "/api/HttpExample". Dwa sposoby na jej wywołanie za pomocą polecenia "curl" w bash:
         * 1. curl -d "HTTP Body" {twój host}/api/HttpExample
         * 2. curl "{twój 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 przetworzył żądanie.");
    
            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();
            }
        }
    }

Konfiguracja Dockerfile

Następnym krokiem jest utworzenie i skonfigurowanie Dockerfile w katalogu głównym projektu.

  1. W Dockerfile określ:
    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"]

Powyższy kod to prosty Dockerfile, który zawiera następujące instrukcje:

  • Obraz SDK, który ma być używany. Docker pobierze go, gdy zostanie uruchomiona budowa. Wersja SDK jest określona jako tag.
  • Katalog roboczy, który jest określony w następnej linii.
  • Polecenie do skopiowania wszystkiego do kontenera, opublikowania aplikacji i określenia punktu wejścia.

Docker Hub

  1. Zaloguj się do Docker Hub
  2. Utwórz publiczne repozytorium

Budowanie i uruchamianie aplikacji w Dockerze

Teraz aplikację można zbudować i uruchomić w Dockerze. Otwórz ulubiony terminal, zmień katalog na folder z aplikacją (folder, w którym znajduje się plik rozwiązania i Dockerfile) i uruchom poniższe polecenie:

  1. Buduj polecenie dockerfile w konsoli

    //przykład
    docker build -t <nazwa użytkownika>/<nazwa repozytorium> .
    
    docker build -t user/asposefunction .

  2. Przy pierwszym uruchomieniu tego polecenia może to potrwać dłużej, ponieważ Docker musi pobrać niezbędne obrazy. Po zakończeniu poprzedniego polecenia uruchom następujące polecenie, aby przesłać obraz do docker hub.

    //przykład
    docker push <nazwa użytkownika>/<nazwa repozytorium>:tagname
    
    docker push user/aspose-cad-java:latest

  3. Uruchom dockerfile w IDE, a następnie przesyłaj do docker hub.
    Uruchom docker w ide

  4. Wprowadź nazwę obrazu, jak w repozytorium Docker Hub.
    Uruchom docker w ide-następnie

  5. Czekaj na zakończenie.

Azure

  1. Zaloguj się do Azure.
  2. Wybierz usługi Azure.
  3. Wybierz aplikację funkcji i utwórz funkcję.
    Przycisk utworzenia funkcji Azure
  4. Powtórz podstawowe ustawienia, jak na obrazku poniżej.
    Ustawienia funkcji Azure
  5. Kliknij ‘Przejrzyj + utwórz’ -> Utwórz.
  6. Poczekaj na zakończenie wdrażania.
  7. Kliknij przycisk ‘Przejdź do zasobu’.
    Przycisk zasobu
  8. Zatrzymaj funkcję aspose-cad-docker-example.
    Zatrzymaj kontener
  9. Przejdź do menu centrum wdrożeń i wprowadź odpowiednie ustawienia.
    Centrum wdrożeń
  10. Zapisz ustawienia
  11. Skopiuj URL webhooka z ustawień centrum wdrożenia.
    URL webhooka
  12. Przejdź do Docker Hub, wybierz swoje repozytorium i wybierz webhooki.
  13. Wklej ‘URL webhooka’ z Azure do URL webhooka Docker Hub i ustaw nazwę.
    Ustawienia webhooka w docker
  14. Kliknij przycisk stwórz.
  15. Wraca do przeglądu funkcji azure i uruchom kontener.
    Menu przeglądu

Przykład wykonania

  1. Ustawienia Postmana.
    Menu przeglądu
  2. Wybierz dowolny plik DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, plik SVG.
  3. Kliknij przycisk wyślij.
  4. Zapisz wynik Zapisz odpowiedź

Więcej przykładów

Aby uzyskać więcej przykładów, jak można używać Aspose.CAD w Dockerze, zobacz przykłady.

Zobacz także