Back to "ImageSharp με Docker"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Docker ImageSharp

ImageSharp με Docker

Thursday, 01 August 2024

ImageSharp είναι μια μεγάλη βιβλιοθήκη για τη συνεργασία με τις εικόνες στο.NET. Είναι γρήγορο, εύκολο στη χρήση, και έχει πολλά χαρακτηριστικά. Σε αυτή τη δημοσίευση, θα σας δείξω πώς να χρησιμοποιήσετε το ImageSharp με το Docker για να δημιουργήσετε μια απλή υπηρεσία επεξεργασίας εικόνων.

Τι είναι το ImageSharp;

Το ImageSharp μου επιτρέπει να δουλεύω απρόσκοπτα με εικόνες στο.NET. Είναι μια βιβλιοθήκη cross-platform που υποστηρίζει ένα ευρύ φάσμα μορφών εικόνας και παρέχει ένα απλό API για την επεξεργασία εικόνων. Είναι γρήγορο, αποτελεσματικό και εύκολο στη χρήση.

Ωστόσο, υπάρχει ένα θέμα στην εγκατάσταση μου χρησιμοποιώντας docker και ImageSharp. Όταν προσπαθώ να φορτώσω μια εικόνα από ένα αρχείο, παίρνω το ακόλουθο σφάλμα: "Απαγορεύεται η είσοδος στο μονοπάτι /wwroot/cache/ κλπ...." Αυτό προκαλείται από Docker ASP.NET εγκαταστάσεις που δεν επιτρέπουν την πρόσβαση εγγραφής στον κατάλογο cache ImageSharp χρησιμοποιεί για την αποθήκευση προσωρινών αρχείων.

∆ιάλυμα

Η λύση είναι να τοποθετήσετε έναν όγκο στο δοχείο Docker που δείχνει σε έναν κατάλογο στο μηχάνημα υποδοχής. Με αυτόν τον τρόπο, η βιβλιοθήκη ImageSharp μπορεί να γράψει στον κατάλογο cache χωρίς προβλήματα.

Εδώ είναι πώς να το κάνουμε:

mostlylucid:
image: scottgal/mostlylucid:latest
volumes:
- /mnt/imagecache:/app/wwwroot/cache

Εδώ βλέπετε ότι χαρτογράφω το αρχείο /app/wwwroot/cache σε έναν τοπικό κατάλογο στο μηχάνημα υποδοχής μου. Με αυτόν τον τρόπο, το ImageSharp μπορεί να γράψει στον κατάλογο cache χωρίς προβλήματα.

Στη μηχανή Ubuntu μου δημιούργησα έναν κατάλογο / mnt/imagecache και στη συνέχεια έτρεξα την αφηρημένη εντολή για να το γράψω (από οποιονδήποτε, ξέρω ότι αυτό δεν είναι ασφαλές αλλά δεν είμαι γκουρού Linux:)

chmod  777 -p /mnt/imagecache

Στο πρόγραμμά μου. cs Έχω αυτή τη γραμμή:

builder.Services.AddImageSharp().Configure<PhysicalFileSystemCacheOptions>(options => options.CacheFolder = "cache");

Καθώς η cacheroot προεπιλέγει να wwwroot αυτό θα γράψει τώρα στον κατάλογο /mnt/imagecache στο μηχάνημα υποδοχής.

logo

©2024 Scott Galloway