Salta al contenuto principale
Versione: 6.x

Docker

Per scaricare la più recente immagine docker pre compilata:

prelievo del docker verdaccio/verdaccio

Docker pull

Versioni Etichettate

Conteggio alternativo Pull del Docker

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 il montaggio di conf, storage e plugins al file di sistema degli host (esempio sotto).

Nota che, se effettui una configurazione di montaggio come questa, devi prima fornire una copia di config.yaml in tale cartella. Il contenitore del Docker non si avvierà propriamente se questo file è mancante.

Puoi copiare inizialmente questo file da https://github.com/verdaccio/verdaccio/blob/5.x/conf/docker.yaml.

Tuttavia, nota gli avvisi di sicurezza in quel file; vorrai sicuramente bloccarli durante la produzione.

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 opera come un utente non di root (uid=10001) nel contenitore, se utilizzi il montaggio di associazione per sovrascrivere i valori predefiniti, devi assicurarti che la cartella di montaggio sia assegnata all'utente corretto. Nell'esempio precedente, devi eseguire sudo chown -R 10001:65533 /path/for/verdaccio, altrimenti, otterrai degli errori di autorizzazione all'esecuzione. Usa il volume del docker è consigliato sull'uso del montaggio d'associazione.

Variabili ambientali

Verdaccio fornisce una nuova serie di variabili ambientali per modificare i permessi, la porta o il protocollo http; visualizzale sulla pagina delle variabili ambientali.

SELinux

Se SELinux è forzato nel tuo sistema, le cartelle da associare e 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 associata e 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 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ò cambiare le etichette di file e cartelle condivisi. Per rendere una cartella accessibile ai contenitori, cambiane il tipo in container_file_t.

$ chcon -Rt container_file_t ./conf

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

Una soluzione alternativa è usare i flag z e Z. Per aggiungere il flag z al punto di montaggio ./conf:/verdaccio/conf basta cambiarlo in ./conf:/verdaccio/conf:z. Il flag z rietichetta la cartella e la rende accessibile da ogni contenitore mentre i flag Z rietichettano la cartella rendendola accessibile solo a un 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

I plugin sono installabili in una cartella separata e montata usando Docker o Kubernetes, tuttavia, assicurati di creare plugin con dipendenze native usando la stessa immagine di base come file del Docker di Verdaccio.

Creare il proprio Dockerfile utilizzando verdaccio/verdaccio:tag come base

Se il plugin esiste già in qualche registro, potrebbe essere installato globalmente con il comando npm.

FROM verdaccio/verdaccio:6
ADD docker.yaml /verdaccio/conf/config.yaml
USER root
RUN npm install --global verdaccio-static-token \
&& npm install --global verdaccio-auth-memory
USER $VERDACCIO_USER_UID

Per ulteriori esempi dettagliati di plugin, dai un'occhiata alla cartella docker-examples.

Aggiungere plugin con i plugin locali nel Dockerfile

Se i pacchetti non sono disponibili e desideri testare un plugin locale, puoi utilizzare la cartella /verdaccio/plugins, Verdaccio cercherà i plugin in questa cartella all'avvio.

  1. Crea un'immagine di base con il supporto multi-fase.
  2. ADD il plugin locale all'immagine
  3. Installa le dipendenze, necessarie se il tuo plugin ne ha; potresti doverle creare nel caso in cui necessiti di un passaggio di traspirazione (tsc, babel).
  4. Copiare la cartella finale nell'immagine finale e applicare le autorizzazioni, così che Verdaccio possa trovare le cartelle (Verdaccio utilizza l'utente personalizzato $VERDACCIO_USER_UID, leggi di più qui).
FROM node:lts-alpine as builder
RUN mkdir -p /verdaccio/plugins
ADD plugins/verdaccio-docker-memory /verdaccio/plugins/verdaccio-docker-memory
RUN cd /verdaccio/plugins/verdaccio-docker-memory \
&& npm install --production
FROM verdaccio/verdaccio:6
ADD docker.yaml /verdaccio/conf/config.yaml
COPY --chown=$VERDACCIO_USER_UID:root --from=builder \
/verdaccio/plugins/verdaccio-docker-memory \
/verdaccio/plugins/verdaccio-docker-memory

Per ulteriori esempi dettagliati di plugin, dai un'occhiata alla cartella docker-examples.

Aggiungere plugin senza creare una nuova immagine

  1. Utilizzare docker-compose.yaml. L'esempio si trova di seguito.
  2. Mappando i volumi nel docker, Verdaccio cercherà di default i plugin in /verdaccio/plugins.
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

Configurazione di Docker e della porta personalizzata

Qualsiasi host:port configurata in conf/config.yaml sotto listen è correntemente ignorata utilizzando il docker.

Se desideri raggiungere l'istanza del docker di Verdaccio sotto una porta differente, ad esempio 5000 nel tuo comando docker run, aggiungi la variabile ambientale VERDACCIO_PORT=5000 e poi esponi la porta -p 5000:5000.

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

Ovviamente, i numeri che fornisci al parametro -p devono corrispondere.

Utilizzare HTTPS con Docker

Puoi configurare il protocollo che Verdaccio ascolterà, similmente alla configurazione della porta. Devi sovrascrivere il valore predefinito ("http") della variabile ambientale PROTOCOL a "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

Puoi impostare la porta da utilizzare (sia per il contenitore che per l'host), prefissando il suddetto comando con VERDACCIO_PORT=5000.

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

Il docker genererà un dato volume in cui archiviare i dati persistenti dell'applicazione. Puoi utilizzare docker inspect o docker volume inspect per rivelare la posizione fisica del volume e modificare la configurazione, come:

$ 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

Vai al ramo 5.x ed esegui:

docker build -t verdaccio .

Inoltre, esiste uno script di yarn per creare l'immagine del docker, quindi puoi anche fare:

yarn run build:docker

Nota: La prima build richiede qualche minuto per essere creata, poiché deve eseguire yarn install e richiederà altrettanto tempo ogni qual volta modificherai qualsiasi file che non sia elencato in .dockerignore.

Sei pregato di notare che, per ognuno dei suddetti comandi del docker, devi averlo installato sulla tua macchina e, l'eseguibile del docker dovrebbe essere 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, come il 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.