插件窝 干货文章 Docker部署verdaccio搭建npm私服的实现

Docker部署verdaccio搭建npm私服的实现

Verdaccio Docker 配置 storage 686    来源:    2025-04-01

Docker部署Verdaccio搭建npm私服指南

Verdaccio是一个轻量级的私有npm仓库管理工具,使用Docker部署可以简化安装和配置过程。以下是详细的实现步骤:

1. 准备工作

确保已安装: - Docker - Docker Compose (可选)

2. 快速启动方式

方法一:直接使用Docker命令

docker run -it --rm --name verdaccio \
  -p 4873:4873 \
  -v verdaccio-storage:/verdaccio/storage \
  -v verdaccio-conf:/verdaccio/conf \
  verdaccio/verdaccio

方法二:使用Docker Compose

创建docker-compose.yml文件:

version: '3'

services:
  verdaccio:
    image: verdaccio/verdaccio
    container_name: verdaccio
    ports:
      - "4873:4873"
    volumes:
      - ./storage:/verdaccio/storage
      - ./config:/verdaccio/conf
      - ./plugins:/verdaccio/plugins
    environment:
      - VERDACCIO_PORT=4873

然后运行:

docker-compose up -d

3. 自定义配置

默认配置位于容器内的/verdaccio/conf/config.yaml,可以通过挂载卷来自定义:

  1. 创建本地配置文件目录
mkdir -p verdaccio/config
  1. 创建自定义配置文件config.yaml
storage: /verdaccio/storage
plugins: /verdaccio/plugins

web:
  title: My Private NPM Registry
  # comment out to disable gravatar support
  # gravatar: false

auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    # max_users: 1000

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $authenticated
    publish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    access: $authenticated
    publish: $authenticated
    proxy: npmjs

server:
  keepAliveTimeout: 60

middlewares:
  audit:
    enabled: true

logs: { type: stdout, format: pretty, level: http }

4. 使用私有仓库

设置npm源

npm set registry http://<your-server-ip>:4873/

或临时使用:

npm --registry http://<your-server-ip>:4873/ install <package>

添加用户

npm adduser --registry http://<your-server-ip>:4873/

发布包

npm publish --registry http://<your-server-ip>:4873/

5. 高级配置

使用HTTPS

  1. 准备SSL证书
  2. 修改config.yaml
server:
  keepAliveTimeout: 60
  ssl:
    key: /verdaccio/conf/key.pem
    cert: /verdaccio/conf/cert.pem
    ca: /verdaccio/conf/ca.pem
  1. 更新Docker命令挂载证书:
docker run -it --rm --name verdaccio \
  -p 4873:4873 \
  -v ./config.yaml:/verdaccio/conf/config.yaml \
  -v ./key.pem:/verdaccio/conf/key.pem \
  -v ./cert.pem:/verdaccio/conf/cert.pem \
  -v ./ca.pem:/verdaccio/conf/ca.pem \
  -v ./storage:/verdaccio/storage \
  verdaccio/verdaccio

使用插件

  1. 创建插件目录
  2. 安装所需插件
  3. 在配置文件中启用插件

6. 维护与管理

备份数据

备份挂载的storage和config目录即可。

升级版本

docker pull verdaccio/verdaccio:latest
docker-compose down
docker-compose up -d

7. 常见问题解决

Q: 无法访问4873端口 A: 检查防火墙设置,确保端口已开放

Q: 发布包时权限不足 A: 确保已登录且有足够权限,检查配置文件中的access设置

Q: 存储空间不足 A: 可以挂载更大的存储卷,或配置外部存储

通过以上步骤,您应该能够成功使用Docker部署Verdaccio并搭建私有npm仓库。根据实际需求调整配置即可。