Salta al contenuto principale

Docker

alt Conteggio Prelievi del Docker

Per prelevare l'ultima immagine del docker prefabbricata:

prelievo del docker verdaccio/verdaccio

Prelievo del Docker

Versioni Etichettate

Dalla versione v2.x puoi prelevare le immagini del docker per tag, come segue:

Per una versione maggiore:

docker pull verdaccio/verdaccio:4

Per una versione minore:

docker pull verdaccio/verdaccio:4.0

Per una versione specifica (patch):

docker pull verdaccio/verdaccio:4.0.0

Se sei interessato a un elenco di tag, sei pregato di visitare il sito web di Docker Hub.

Eseguire Verdaccio usando Docker

Per eseguire il contenitore del docker:

docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio

L'ultimo argomento definisce che immagine usare. La riga suddetta preleverà l'ultima immagine prefabbricata dal dockerhub, se non lo hai già fatto.

Se hai costruito un'immagine localmente, usa verdaccio come ultimo argomento.

Puoi usare -v per associare conf, storage e plugins al file di sistema degli host:

V_PATH=/path/for/verdaccio; docker run -it --rm --name verdaccio \
-p 4873:4873 \
-v $V_PATH/conf:/verdaccio/conf \
-v $V_PATH/storage:/verdaccio/storage \
-v $V_PATH/plugins:/verdaccio/plugins \
verdaccio/verdaccio

se stai eseguendo in un server, potresti voler aggiungere -d per eseguirlo in background Nota: Verdaccio è eseguito come un utente non di root (uid=10001) nel contenitore, se usi il montaggio per sovrascrivere i predefiniti, devi assicurarti che la cartella di montaggio sia assegnata al giusto utente. Nel suddetto esempio, devi eseguire sudo chown -R 10001:65533/path/for/verdaccio, altrimenti otterrai errori d'autorizzazione in esecuzione. Usa il volume del docker è consigliato sull'uso del montaggio d'associazione.

Verdaccio 4 fornisce una nuova serie di variabili ambientali per modificare le autorizzazioni, la porta o il protocollo http. Ecco l'elenco completo:

ProprietàdefaultDescrizione
VERDACCIO_APPDIR/opt/verdaccio-buildla cartella operativa del docker
VERDACCIO_USER_NAMEverdacciol'utente del sistema
VERDACCIO_USER_UID10001l'id utente usato per applicare le autorizzazioni della cartella
VERDACCIO_PORT4873la porta di Verdaccio
VERDACCIO_PROTOCOLhttpil protocollo http predefinito

SELinux

Se SELinux è forzato nel tuo sistema, le cartelle da montare nel contenitore devono esser rietichettate. Altrimenti Verdaccio non potrà leggere quei file.

 fatal--- cannot open config file /verdaccio/conf/config.yaml: Error: CONFIG: it does not look like a valid config file

Se Verdaccio non può leggere i file su una cartella montata e sei insicuro, sei pregato di controllare /var/log/audit/audit.log per confermare che sia un problema di SELinux. In questo esempio, il suddetto errore ha prodotto la seguente negazione di AVC.

type=AVC msg=audit(1606833420.789:9331): avc:  denied  { read } for  pid=1251782 comm="node" name="config.yaml" dev="dm-2" ino=8178250 scontext=system_u:system_r:container_t:s0:c32,c258 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0

chcon può modificare le etichette dei file e le cartelle condivisi. Per rendere accessibile una cartella ai contenitori, cambia il tipo di cartella a container_file_t.

$ chcon -Rt container_file_t ./conf

Se vuoi rendere la cartella accessibile solo a un contenitore specifico, usa chchat per specificare una categoria di SELinux corrispondente.

Una soluzione alternativa è usare z e Z flag. Per aggiungere il flag z al punto di montaggio ./conf:/verdaccio/conf basta cambiarlo a ./conf:/verdaccio/conf:z. Il flag z rietichetta la cartella e la rende accessibile da ogni contenitore mentre i flag Z rietichettano la cartella e la rendono accessibile solo a quel contenitore specifico. Tuttavia usare questi flag è pericoloso. Un piccolo errore di configurazione, come montare /home/user o /var può disordinare le etichette su queste cartelle e rendere il sistema non avviabile.

Estensioni

Si può definire la porta da utilizzare (sia per il container che per l'host) anteponendo al comando precedente il prefisso VERDACCIO_PORT=5000.

FROM verdaccio/verdaccio

USER root

ENV NODE_ENV=production

RUN npm i && npm install verdaccio-s3-storage

USER verdaccio

Configurazione di Docker e della porta personalizzata

Qualsiasi host:port configurato in conf/config.yaml sotto a listen viene attualmente ignorato quando si utilizza docker.

Esiste inoltre uno script npm per creare l'immagine docker, quindi si può anche fare:

V_PATH=/path/for/verdaccio; docker run -it --rm --name verdaccio \
-e "VERDACCIO_PORT=8080" -p 8080:8080 \
verdaccio/verdaccio

Naturalmente i numeri che dai al parametro -p devono corrispondere.

Utilizzare HTTPS con Docker

È possibile configurare il protocollo che verdaccio andrà ad ascoltare, analogamente a come si configura la porta. È necessario sovrascrivere il valore predefinito ("http") della variabile ambientale del PROTOCOL con "https", dopo aver specificato i certificati nel config.yaml.

docker run -it --rm --name verdaccio \
--env "VERDACCIO_PROTOCOL=https" -p 4873:4873
verdaccio/verdaccio

Utilizzare docker-compose

  1. Scaricare l'ultima versione di docker-compose.
  2. Creare ed eseguire il container:
$ docker-compose up --build

Esiste una cartella separata che ospita configurazioni multiple per comporre immagini Docker con verdaccio, per esempio, come proxy inverso:

version: '3.1'

services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
networks:
- node-network
environment:
- VERDACCIO_PORT=4873
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
networks:
node-network:
driver: bridge

Docker genererà un volume nominato nel quale immagazzinare i dati persistenti dell'applicazione. È possibile utilizzare docker inspect o docker volume inspect per rivelare l'ubicazione fisica del volume e modificare la configurazione, in questo modo:

$ docker volume inspect verdaccio_verdaccio
[
{
"Name": "verdaccio_verdaccio",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/verdaccio_verdaccio/_data",
"Labels": null,
"Scope": "local"
}
]

Crea la tua immagine del Docker

docker build -t verdaccio .

Esiste anche uno script npm per creare l'immagine del docker, quindi puoi anche fare:

yarn run build:docker

Nota: La prima build impiega qualche minuto per crearsi perché deve eseguire npm install e impiegherà questo tempo nuovamente ogni volta che modifichi qualsiasi file che non sia elencato in .dockerignore.

Sei pregato di notare che per ognuno dei comandi del docker suddetti devi aver installato il docker sulla tua macchina e il docker eseguibile dovrebbe esser disponibile sul tuo $PATH.

Esempi del Docker

Esiste una repository separata che ospita diverse configurazioni per comporre le immagini del Docker con Verdaccio, ad esempio, un proxy inverso:

https://github.com/verdaccio/docker-examples

Build Personalizzate del Docker

Se hai creato un'immagine in base a Verdaccio, sentiti libero di aggiungerla a questo elenco.