Salta al contenuto principale
Versione: Successivo

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 la configurazione del montaggio come sopra, dovrai prima fornire una copia di config.yaml in quella cartella; il contenitore di 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.

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 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.

FROM node:lts-alpine as builder
RUN mkdir -p /verdaccio/plugins \
&& cd /verdaccio/plugins \
&& npm install --global-style --no-bin-links --omit=optional verdaccio-auth-memory@latest
FROM verdaccio/verdaccio:5
ADD docker.yaml /verdaccio/conf/config.yaml
COPY --chown=$VERDACCIO_USER_UID:root --from=builder \
/verdaccio/plugins/node_modules/verdaccio-auth-memory \
/verdaccio/plugins/verdaccio-auth-memory

Per ulteriori informazioni, dai un'occhiata ad esempi di plugin reali con Docker, nel nostro codice sorgente.

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

docker build -t verdaccio .

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

yarn run build:docker

Nota: La prima build impiega qualche minuto a crearsi perché deve eseguire npm install e impiegherà lo stesso tempo ogni volta che modifichi qualsiasi file 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.