Skip to main content

Docker

alt Docker Pulls Count

Для скачивания последней версии Docker образа:

docker pull verdaccio/verdaccio

Docker pull

Версии с меткой

Начиная с версии v2.x вы можете скачать Docker образ с помощью метки, вот так:

Мажорная версия:

docker pull verdaccio/verdaccio:4

Минорная версия:

docker pull verdaccio/verdaccio:4.0

Конкретная версия (патч):

docker pull verdaccio/verdaccio:4.0.0

Если вас интересует весь список тегов, посетите нашу страницу на сайте Docker Hub.

Запускаем Verdaccio, используя Docker

Запуск Docker контейнера:

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

Последний аргумент указывает, какой именно образ нужно использовать. Эта команда скачает последний образ из dockerhub, если вы ещё не сделали этого ранее.

Если этот образ у вас уже скачан используйте verdaccio в качестве последнего аргумента.

Вы можете использовать -v для того, что бы примонтировать каталоги conf, storage и plugins к основной (host) файловой системе:

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 Примечание: внутри контейнера Verdaccio запускается не из под root (uid=10001), и если вы используете кастомное монтирование каталогов, вам необходимо убедиться, что у пользователя будет доступ к этим каталогам. In above example, you need to run sudo chown -R 10001:65533 /opt/verdaccio otherwise you will get permission errors at runtime. Используйте docker разделы при монтировании каталогов.

Verdaccio 4 предоставляет новый набор переменных окружения для модификации прав доступа, порта и http-протокола. Вот полный список:

СвойствоПо умолчаниюОписание
VERDACCIO_APPDIR/opt/verdaccio-buildрабочая папка докера
VERDACCIO_USER_NAMEverdaccioсистемный пользователь
VERDACCIO_USER_UID10001id юзера, который используется для задания прав на папки
VERDACCIO_PORT4873порт сервера Verdaccio
VERDACCIO_PROTOCOLhttphttp-протокол по умолчанию

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

Конечно, цифры, которые вы поставили в параметр -p, должны совпадать.

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.

Плагины

Вы можете указать, какой порт использовать (для контейнера и хоста), предварив команду выше указанием VERDACCIO_PORT=5000.

FROM verdaccio/verdaccio

USER root

ENV NODE_ENV=production

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

USER verdaccio

Docker и кастомная конфигурация порта

Свойства host:port, определенные в conf/config.yaml в секции listen , будут проигнорированы при использовании в docker.

Есть так же npm скрипт для сборки Docker образа, по этому вы можете выполнить:

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.

Использование HTTPS с Docker

Вы можете настроить протокол, который verdaccio будет слушать, аналогично тому, как ранее конфигурировался порт. Необходмило переопределить значение по умолчанию ("http") переменной окружения PROTOCOL на "https", после того, как вы укажете сертификаты в config.yaml.

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

Использование docker-compose

  1. Возьмите последнюю версию docker-compose.
  2. Соберите и запустите контейнер:
$ docker-compose up --build

Это отдельные репозитории, которые содержат многожество конфигураций для сборки Docker образов с verdaccio, для запуска обратного прокси:

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 сгенерирует именованный раздел, в котором будут храниться данные приложения. Вы можете использовать docker inspect или docker volume inspect для определения физического местоположения и изменения конфигурации, например:

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

Сборка собственного 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

Note: The first build takes some minutes to build because it needs to run npm install, and it will take that long again whenever you change any file that is not listed in .dockerignore.

Имейте в виду, что для выполнения всех, представленных выше команд, Docker должен быть установлен на вашем компьютере и исполняемый файл должен быть представлен в переменной окружения $PATH.

Примеры

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

Пользовательские сборки

Если у вас есть образ, основанный на Verdaccio, не стесняйтесь - добавляйте его в этот список.