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 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à | default | Descrizione |
---|---|---|
VERDACCIO_APPDIR | /opt/verdaccio-build | la cartella operativa del docker |
VERDACCIO_USER_NAME | verdaccio | l'utente del sistema |
VERDACCIO_USER_UID | 10001 | l'id utente usato per applicare le autorizzazioni della cartella |
VERDACCIO_PORT | 4873 | la porta di Verdaccio |
VERDACCIO_PROTOCOL | http | il 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:6
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
- 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
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.
- docker-verdaccio-multiarch Specchi dell'immagine a più archi
- 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
- verdaccio-auth-gitlab