jmuhire
jmuhire

Reputation: 2221

Verdaccio Migration, from 3 to 4, breaking change not loading the storage folder

I have encountered a sneaky un-documented breaking change migrating from my private Verdaccio registry from v3 to v4.

After migration, the v4 is not loading the existing storage content that is define in a docker volume as it was done for v3. After login the list of libraries is empty.

I have found this thread from github about this issue, but none of the proposed solution solves my problem : https://github.com/verdaccio/verdaccio/issues/1324

I am using docker-compose to load verdaccio from docker hub and the docker-compose file is the followig (works perfectly with v3) :

version: "2"
services:
  verdaccio:
  image: verdaccio/verdaccio:3.13
  container_name: verdaccio
  ports:
    - "4873:4873"
  volumes:
    - verdaccio_data:/verdaccio
volumes:
  verdaccio_data:
    external: true

Following the proposed solutions in the github thread, I have tried to define a docker volume per folder as :

version: "3"
services:
  verdaccio:
    image: verdaccio/verdaccio:4.13
    container_name: verdaccio
    ports:
      - "4873:4873"
    volumes:
      - verdaccio_data_conf:/verdaccio/conf
      - verdaccio_data_storage:/verdaccio/storage
volumes:
  verdaccio_data_conf:
    external: true
  verdaccio_data_storage:
    external: true

With this approach Verdaccio is not even loading, the config.yaml is not found.

I have checked all env variables and the config.yaml is correct, I am looking for another aproach that can solve this issue when using docker compose.

Thanks a lot!

Upvotes: 4

Views: 232

Answers (2)

Alejandro Morán
Alejandro Morán

Reputation: 719

There is a few changes to take into account while migrating from Verdaccio 3 to Verdaccio 5 version.

On this regard the change that is affecting that case is the different way that volumes are set now. Volumes have been splitted into conf, storage and plugins and the prefix data is not present, so the config must look like this:

version: "2"
services:
  verdaccio:
    image: verdaccio/verdaccio:5
    container_name: verdaccio
    ports:
      - "4873:4873"
    volumes:
      - verdaccio_conf:/verdaccio/conf
      - verdaccio_storage:/verdaccio/storage
      - verdaccio_plugins:/verdaccio/plugins
    environment:
      - VERDACCIO_PUBLIC_URL=https://yourpublicurl.com
volumes:
  verdaccio_conf:
    external: true
  verdaccio_storage:
    external: true
  verdaccio_plugins:
    external: true

Upvotes: 1

Kamèl Romdhani
Kamèl Romdhani

Reputation: 370

The storage in version 4 is in

/verdaccio/storage/data

but in version 3 it's in

/verdaccio/storage

so obviously if you update the configuration it will not load the existing storage content.

Solution: make sure your data is where your config is pointing

Upvotes: 0

Related Questions