Docker运行OpenAPI Generator如何保持宿主文件夹用户所有权?
问题解决:调整Docker命令让生成文件归当前用户所有
可以通过调整命令实现,同时兼容Linux和Windows双环境,也能在CI/CD流水线中正常使用,具体修改如下:
修改后的命令
docker run --rm \ -v $PWD:/local \ -u $(id -u):$(id -g) \ openapitools/openapi-generator-cli generate \ -i /local/petstore.yaml \ -g go \ -o /local/out/go
原理说明
- Linux环境:
-u $(id -u):$(id -g)参数让容器以当前宿主用户的UID(用户ID)和GID(组ID)运行,容器内生成的文件会直接继承这个ID,因此宿主用户拥有完整权限,无需sudo即可删除或修改。 - Windows环境:Docker在Windows下处理卷映射时会自动适配权限,
-u参数会被忽略,不会影响命令执行和文件权限,完全兼容。 - CI/CD流水线:该命令在CI环境中同样有效,流水线运行用户的UID/GID会被正确传递,生成的产物可直接清理,无需额外权限操作。
之前尝试的 chown 无效,是因为默认容器以root用户运行,生成的文件属于root,宿主普通用户没有权限修改文件所有权;而指定UID/GID后,容器内的用户与宿主用户身份一致,从根源上避免了权限问题。
内容的提问来源于stack exchange,提问作者Lorah Attkins
相关产品推荐
相关产品推荐

