You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下使用vite-plugin-mkcert遇权限拒绝错误求助

解决Docker中vite-plugin-mkcert权限拒绝问题

方法1:自定义mkcert证书存储目录

vite-plugin-mkcert支持通过cacheDir参数指定证书存储路径,将其设置为项目内的目录(root用户可直接读写)即可绕过/root目录的权限限制:

修改你的vite.config.js:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import mkcert from 'vite-plugin-mkcert';

export default defineConfig({
    server: {
        https: true, // 必须启用https才能让mkcert生效
        host: '0.0.0.0',
        hmr: {
            host: '0.0.0.0'
        },
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
        mkcert({
            cacheDir: './.vite-mkcert' // 指定项目内目录存储证书文件
        })
    ],
});

执行npm run dev后,插件会自动创建.vite-mkcert目录并存储证书,不会再触发权限错误。

方法2:提前创建目标目录并设置权限

如果必须使用默认的/root/.vite-plugin-mkcert目录,可在Dockerfile中提前创建该目录并确保权限正确:

# 构建镜像时创建目录并设置权限
RUN mkdir -p /root/.vite-plugin-mkcert && chmod 700 /root/.vite-plugin-mkcert

也可在容器启动后手动执行:

docker exec -it 你的容器名 mkdir -p /root/.vite-plugin-mkcert && chmod 700 /root/.vite-plugin-mkcert

方法3:挂载宿主机目录到容器证书存储路径

将宿主机的一个目录挂载到容器的/root/.vite-plugin-mkcert,避免容器内目录权限问题:

docker run -v $(pwd)/.vite-mkcert-cache:/root/.vite-plugin-mkcert 你的镜像名

证书会存储在宿主机的.vite-mkcert-cache目录,容器内root用户可正常读写。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:20:47