Add*_*son 3 permissions jekyll docker docker-compose
由于权限错误,我无法构建使用 git 克隆的 jekyll 站点。我使用的是 Ubuntu 18.04。我已经查看了大多数有关此错误的帖子,但没有一个解决方案对我有用。
构建站点的命令是 docker-compose up。使用或不使用 sudo 运行此命令都不会更改错误。我在 docker 组中。我可以使用bundle exec jekyllserve 构建网站。此命令成功创建 _site 文件夹。
我尝试手动添加 _site,但这会导致不同的错误。
$ docker-compose up
Starting site ... done
Attaching to site
site | Configuration file: /srv/jekyll/_config.yml
site | Source: /srv/jekyll
site | Destination: /srv/jekyll/_site
site | Incremental build: disabled. Enable with --incremental
site | Generating...
site | Jekyll Feed: Generating feed for posts
site | jekyll 3.8.5 | Error: Permission denied @ dir_s_mkdir - /srv/jekyll/_site
site exited with code 1
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: '3'
services:
doc:
image: jekyll/jekyll:3.8
volumes:
- .:/srv/jekyll
container_name: site
ports:
- "4000:4000"
stdin_open: true
tty: true
command: bash -c "bundle install && bundle exec jekyll serve --host 0.0.0.0"
Run Code Online (Sandbox Code Playgroud)
我希望不会出现错误并成功创建 _site 目录。
小智 6
我有同样的问题,我从问题中了解到,图像jekyll/jekyll:3.8在 UID 1000 下创建了一个名为jekyll的组和用户,这是 Ubuntu 的第一个用户(在我的例子中)。
当您尝试使用与用户 UID 1000 不同的另一个用户运行您的撰写文件时,您安装的卷的所有者来自当前用户,这与 jekyll 的 UID 不同,然后当您的服务尝试运行他拥有的内容时没有许可。
为了解决这个问题,我在这个存储库中找到了这个环境变量:
JEKYLL_UID = 1000
JEKYLL_GID = 1000
在撰写文件中添加环境变量并将值 1000 更改为当前用户的 UID。
environment:
JEKYLL_UID: 1001
JEKYLL_GID: 1001
Run Code Online (Sandbox Code Playgroud)
这对我来说效果很好。
要打印您当前的 UID:
$ echo $UID
1001
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |