Condivisione immagini con Docker (Italiano (Italian))

Condivisione immagini con Docker

Comments

NOTE: Apart from English (and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.

Thursday, 01 August 2024

//

Less than a minute

ImageSharp è una grande libreria per lavorare con le immagini in.NET. E'veloce, facile da usare, e ha un sacco di caratteristiche. In questo post, vi mostrerò come usare ImageSharp con Docker per creare un semplice servizio di elaborazione delle immagini.

Che cos'è ImageSharp?

ImageSharp mi permette di lavorare senza soluzione di continuità con le immagini in.NET. Si tratta di una libreria multipiattaforma che supporta una vasta gamma di formati di immagine e fornisce una semplice API per l'elaborazione delle immagini. È veloce, efficiente e facile da usare.

Tuttavia c'è un problema nel mio setup utilizzando docker e ImageSharp. Quando provo a caricare un'immagine da un file, ottengo il seguente errore: Accesso negato al percorso /wwroot/cache/ etc... Questo è causato da Docker ASP.NET installazioni che non consentono l'accesso in scrittura alla directory cache ImageSharp utilizza per memorizzare i file temporanei.

Soluzione

La soluzione è quella di montare un volume nel contenitore docker che punta ad una directory sulla macchina host. In questo modo, la libreria ImageSharp può scrivere nella directory della cache senza problemi.

Ecco come si fa:

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

Qui vedete che ho mappato il file /app/wwwroot/cache in una directory locale sulla mia macchina host. In questo modo, ImageSharp può scrivere nella directory della cache senza problemi.

Sulla mia macchina Ubuntu ho creato una directory /mnt/imagecache e poi ho eseguito il comando following per renderlo scrivibile (da chiunque, so che questo non è sicuro ma non sono un guru Linux:))

chmod  777 -p /mnt/imagecache

Nel mio programma.cs ho questa linea:

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

Come impostazione predefinita della cacheroot per wwwroot, ora scriverà alla directory /mnt/imagecache sulla macchina host.

logo

©2024 Scott Galloway