Docker
Per scaricare la più recente immagine docker pre compilata:
prelievo del docker verdaccio/verdaccio
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 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.
- Crea un'immagine di base con il supporto multi-fase.
ADD
il plugin locale all'immagine- 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).
- 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
- Utilizzare
docker-compose.yaml
. L'esempio si trova di seguito. - 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
- Scaricare l'ultima versione di docker-compose.
- 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.
- docker-verdaccio-multiarch Specchi dell'immagine a più archi
- docker-verdaccio-gitlab
- docker-verdaccio
- docker-verdaccio-s3 Contenitore privato NPM che può eseguire il backup in s3
- docker-verdaccio-ldap
- verdaccio-ldap
- verdaccio-compose-local-bridge
- docker-verdaccio
- verdaccio-docker
- verdaccio-server
- coldrye-debian-verdaccio Immagine del docker che fornisce Verdaccio da coldrye-debian-nodejs.
- verdaccio-github-oauth-ui