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

时间:2019-08-14 22:55:05

标签: docker permissions docker-compose jekyll

由于权限错误,我无法构建使用git克隆的jekyll网站。我正在使用Ubuntu 18.04。我查看了有关此错误的大多数SO帖子,但是没有一种解决方案对我有用。

构建站点的命令是docker-compose up。在有或没有sudo的情况下运行此命令都不会更改错误。我在docker组中。我可以使用捆绑包exec jekyll serve构建站点。此命令成功创建_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

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"

我希望不会出现任何错误,并成功创建_site目录。

1 个答案:

答案 0 :(得分:2)

我有同样的问题,我从问题中了解到的是,映像jekyll/jekyll:3.8在UID 1000下创建了一个名为 jekyll 的组和用户,这是Ubuntu的第一个用户(以我为例)。

当您尝试与不同于用户UID 1000的另一个用户运行撰写文件时,您挂载的卷具有该当前用户的所有者,该所有者与jekyll的UID不同,那么当您尝试运行服务时他没有允许的事情。

要解决我在this repository中发现的以下环境变量的问题: JEKYLL_UID = 1000 JEKYLL_GID = 1000

在compose文件中添加env变量,并将当前用户的值1000更改为UID。

    environment:
      JEKYLL_UID: 1001
      JEKYLL_GID: 1001

这对我来说很好。

要打印您当前的UID:

$ echo $UID
1001