无法构建克隆 Jekyll 站点 - jekyll 3.8.5 | 错误:权限被拒绝@dir_s_mkdir - /srv/jekyll/_site

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)