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:
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.
Utwórz projekt funkcji Azure w IntelliJ IDEA.
Narzędzia->Azure->Zaloguj się i wybierz uwierzytelnianie OAuth 2.0.
Zaloguj się w przeglądarce.
Wybierz nazwę subskrypcji.
Dodaj wsparcie dla Dockera.
Edytuj plik DockerFile jak w sekcji Konfiguracja Dockerfile.
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>
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.
- 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
- Zaloguj się do Docker Hub
- 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:
Buduj polecenie dockerfile w konsoli
//przykład docker build -t <nazwa użytkownika>/<nazwa repozytorium> . docker build -t user/asposefunction .
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
Uruchom dockerfile w IDE, a następnie przesyłaj do docker hub.
Wprowadź nazwę obrazu, jak w repozytorium Docker Hub.
Czekaj na zakończenie.
Azure
- Zaloguj się do Azure.
- Wybierz usługi Azure.
- Wybierz aplikację funkcji i utwórz funkcję.
- Powtórz podstawowe ustawienia, jak na obrazku poniżej.
- Kliknij ‘Przejrzyj + utwórz’ -> Utwórz.
- Poczekaj na zakończenie wdrażania.
- Kliknij przycisk ‘Przejdź do zasobu’.
- Zatrzymaj funkcję aspose-cad-docker-example.
- Przejdź do menu centrum wdrożeń i wprowadź odpowiednie ustawienia.
- Zapisz ustawienia
- Skopiuj URL webhooka z ustawień centrum wdrożenia.
- Przejdź do Docker Hub, wybierz swoje repozytorium i wybierz webhooki.
- Wklej ‘URL webhooka’ z Azure do URL webhooka Docker Hub i ustaw nazwę.
- Kliknij przycisk stwórz.
- Wraca do przeglądu funkcji azure i uruchom kontener.Może to potrwać kilka minut, zanim funkcja się uruchomi.
Przykład wykonania
- Ustawienia Postmana.
- Wybierz dowolny plik DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, plik SVG.
- Kliknij przycisk wyślij.
- Zapisz wynik
Więcej przykładów
Aby uzyskać więcej przykładów, jak można używać Aspose.CAD w Dockerze, zobacz przykłady.