Skip to main content

Docker

alt Docker Pulls Count

Pour télécharger la dernière image docker prédéfinie:

docker pull verdaccio/verdaccio

Docker pull

Versions marquées

À partir de la version v2.x, vous pouvez obtenir des images du menu fixe pour la tag, comme suit:

Pour une version majeure:

docker pull verdaccio/verdaccio:4

Pour une version mineure:

docker pull verdaccio/verdaccio:4.0

Pour une version spécifique (patch):

docker pull verdaccio/verdaccio:4.0.0

Si vous êtes intéréssés par une liste de tags, veuillez visiter le site web Docker Hub.

Running Verdaccio using Docker

Pour exécuter le conteneur de docker:

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

The last argument defines which image to use. The above line will pull the latest prebuilt image from dockerhub, if you haven't done that already.

Si vous avez construit une image localement, utilisez verdaccio comme dernier argument.

Vous pouvez utiliser -v pour monter conf, storage et plugins dans le système de fichiers hôte:

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

if you are running in a server, you might want to add -d to run it in the background Note: Verdaccio runs as a non-root user (uid=10001) inside the container, if you use bind mount to override default, you need to make sure the mount directory is assigned to the right user. In above example, you need to run sudo chown -R 10001:65533 /opt/verdaccio otherwise you will get permission errors at runtime. Utiliser le volume docker est recommandé, plutôt qu'utiliser le lieu du montage de liaison.

Verdaccio 4 provides a new set of environment variables to modify either permissions, port or http protocol. Here the complete list:

PropriétédefaultDescription
VERDACCIO_APPDIR/opt/verdaccio-buildthe docker working directory
VERDACCIO_USER_NAMEverdacciothe system user
VERDACCIO_USER_UID10001the user id being used to apply folder permissions
VERDACCIO_PORT4873the verdaccio port
VERDACCIO_PROTOCOLhttpthe default http protocol

SELinux

If SELinux is enforced in your system, the directories to be bind-mounted in the container need to be relabeled. Otherwise verdaccio will be forbidden from reading those files.

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

If verdaccio can't read files on a bind-mounted directory and you are unsure, please check /var/log/audit/audit.log to confirm that it's a SELinux issue. In this example, the error above produced the following AVC denial.

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 can change the labels of shared files and directories. To make a directory accessible to containers, change the directory type to container_file_t.

$ chcon -Rt container_file_t ./conf

If you want to make the directory accessible only to a specific container, use chcat to specify a matching SELinux category.

An alternative solution is to use z and Z flags. To add the z flag to the mountpoint ./conf:/verdaccio/conf simply change it to ./conf:/verdaccio/conf:z. The z flag relabels the directory and makes it accessible by every container while the Z flags relables the directory and makes it accessible only to that specific container. However using these flags is dangerous. A small configuration mistake, like mounting /home/user or /var can mess up the labels on those directories and make the system unbootable.

Plugins

Il existe un dossier distinct qui héberge plusieurs configurations pour composer des images Docker avec verdaccio, par exemple, en tant que proxy inverse:

FROM verdaccio/verdaccio

USER root

ENV NODE_ENV=production

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

USER verdaccio

Configuration de Docker et du port personnalisé

Any host:port configured in conf/config.yaml under listen is currently ignored when using docker.

Il existe également un script npm pour créer une image docker, vous pouvez donc également:

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

Of course the numbers you give to the -p parameter need to match.

Utiliser HTTPS avec Docker

Vous pouvez configurer le protocole que verdaccio écoutera, de la même manière que le port. Vous devez remplacer la valeur par défaut ("http") de la variable d'environnement du PROTOCOL par "https" après avoir spécifié les certificats dans le fichier config.yaml.

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

Utiliser docker-compose

  1. Obtenir la dernière version de docker-composer.
  2. Générer et exécuter le conteneur:
$ docker-compose up --build

You can set the port to use (for both container and host) by prefixing the above command with 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

Docker générera un volume nommé dans lequel les données d'application persistantes seront stockées. Vous pouvez utiliser docker inspect ou docker volume inspect pour révéler l'emplacement physique du volume et modifier la configuration, comme:

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

Créer votre propre image Docker

docker build -t verdaccio .

There is also an npm script for building the docker image, so you can also do:

yarn run build:docker

Remarque: La première génération prend quelques minutes pour être créée car elle doit démarrer npm install et peut prendre le même temps chaque fois que vous modifiez un fichier ne figurant pas dans la liste .dockerignore.

Veuillez noter que pour chacune des commandes de menu mentionnées ci-dessus, il est nécessaire d’installer le docker sur le PC, aussi le docker exécutable doit être disponible sur $PATH.

Exemples de docker

There is a separate repository that hosts multiple configurations to compose Docker images with verdaccio, for instance, as reverse proxy:

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

Constructions personnalisées de Docker

If you have made an image based on Verdaccio, feel free to add it to this list.