由于权限错误,我无法构建使用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目录。
答案 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