Resolving Verdaccio Permissions and Proxy Issues in Docker
问题 1:无法在 Docker 容器中创建目录
问题描述:
在构建 Verdaccio 的 Docker 镜像时,尝试创建 /usr/rn-plugin/storage 和 /usr/rn-plugin/plugins 目录时,出现了权限不足的错误。
解决方案:
通过在 Dockerfile 中切换到 root 用户来创建目录,并设置适当的权限。然后切换回 verdaccio 用户
# verdaccio.Dockerfile
FROM harbor.example.com/cc_iot/verdaccio:latest
# 设置 Verdaccio 配置
COPY ./verdaccio/config.yaml /verdaccio/conf/config.yaml
COPY ./verdaccio/htpasswd /usr/rn-plugin/htpasswd
# 创建存储和插件目录并设置权限
USER root
RUN mkdir -p /usr/rn-plugin/storage /usr/rn-plugin/plugins && \
chown -R 10001:10001 /usr/rn-plugin/storage /usr/rn-plugin/plugins && \
chown 10001:10001 /usr/rn-plugin/htpasswd
USER verdaccio
# 设置存储和插件目录为卷
VOLUME ["/usr/rn-plugin/storage", "/usr/rn-plugin/plugins"]
# 暴露 Verdaccio 端口
EXPOSE 4873
# 设置 Verdaccio 环境变量
ENV VERDACCIO_APPDIR /verdaccio
ENV VERDACCIO_USER verdaccio
ENV VERDACCIO_PORT 4873
ENV VERDACCIO_PROTOCOL http
ENV VERDACCIO_STORAGE /usr/rn-plugin/storage
ENV VERDACCIO_PLUGINS /usr/rn-plugin/plugins
ENV VERDACCIO_LOG_FORMAT pretty
ENV VERDACCIO_LOG_LEVEL trace
ENV VERDACCIO_PUBLIC_URL https://www.example.com/verdaccio
ENTRYPOINT ["/usr/local/bin/verdaccio", "--config", "/verdaccio/conf/config.yaml", "--listen", "0.0.0.0:4873"]
问题 2:本地宿主机目录权限不足
问题描述:
在容器中无法写入挂载的本地目录 /root/dd/storage 和 /root/dd/plugins。