Docker permission probleem

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Orthodroom
  • Registratie: December 2014
  • Niet online
Ik wil met Jekyll een website maken op Github Pages. Om te controleren hoe het eruit ziet voordat ik naar Github push wil ik het lokaal bekijken. Ik heb wat zitten rommelen, maar vanwege gedoe met verschillende installaties leek Docker een goede oplossing.

Na wat zoeken kwam ik het volgende tegen:
https://github.com/peteretelej/jekyll-container/tree/master

Dat heb ik nu aangepast naar:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FROM ruby:2.7.4
MAINTAINER Orthodroom

RUN apt-get -qq update && \
    apt-get -qq install nodejs -y && \
    gem install -q bundler -v 2.4.22

RUN mkdir -p /etc/jekyll && \
    printf 'source "https://rubygems.org"\ngem "github-pages", group: :jekyll_plugins' > /etc/jekyll/Gemfile && \
    printf "\nBuilding requires Ruby gems. Please wait..." && \
    bundle install --gemfile /etc/jekyll/Gemfile --quiet

RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ENV BUNDLE_GEMFILE /etc/jekyll/Gemfile

EXPOSE 4000

ENTRYPOINT ["bundle", "exec"]

CMD ["jekyll", "serve","--host=0.0.0.0"]


Vervolgens probeer ik dat te draaien met vanuit de folder waar mijn _config.yml staat en de rest van de site.
code:
1
2
podman build -f Dockerfile -t orthodroom/jekyll .
podman run --rm -it -p 4000:4000 -v "$PWD":/app -w /app localhost/orthodroom/jekyll:latest

maar krijg dan de volgende foutmelding:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Configuration file: none
            Source: /app
       Destination: /app/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
jekyll 3.9.5 | Error:  Permission denied @ dir_initialize - .
Traceback (most recent call last):
    37: from /usr/local/bundle/bin/bundle:23:in `<main>'
    36: from /usr/local/bundle/bin/bundle:23:in `load'
    35: from /usr/local/bundle/gems/bundler-2.4.22/exe/bundle:29:in `<top (required)>'
    34: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
    33: from /usr/local/bundle/gems/bundler-2.4.22/exe/bundle:37:in `block in <top (required)>'
    32: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli.rb:28:in `start'
    31: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
    30: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli.rb:34:in `dispatch'
    29: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
    28: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
    27: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
    26: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli.rb:492:in `exec'
    25: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli/exec.rb:23:in `run'
    24: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli/exec.rb:58:in `kernel_load'
    23: from /usr/local/bundle/gems/bundler-2.4.22/lib/bundler/cli/exec.rb:58:in `load'
    22: from /usr/local/bundle/bin/jekyll:23:in `<top (required)>'
    21: from /usr/local/bundle/bin/jekyll:23:in `load'
    20: from /usr/local/bundle/gems/jekyll-3.9.5/exe/jekyll:15:in `<top (required)>'
    19: from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
    18: from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
    17: from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
    16: from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
    15: from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
    14: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
    13: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/serve.rb:93:in `start'
    12: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/serve.rb:93:in `each'
    11: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/serve.rb:93:in `block in start'
    10: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/build.rb:36:in `process'
     9: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/commands/build.rb:65:in `build'
     8: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/command.rb:28:in `process_site'
     7: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/site.rb:69:in `process'
     6: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/site.rb:164:in `read'
     5: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:16:in `read'
     4: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:42:in `read_directories'
     3: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:42:in `chdir'
     2: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:42:in `block in read_directories'
     1: from /usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:42:in `entries'
/usr/local/bundle/gems/jekyll-3.9.5/lib/jekyll/reader.rb:42:in `open': Permission denied @ dir_initialize - . (Errno::EACCES)


Dit alles trouwens op een Fedora 39 installatie. Iemand enig idee wat ik fout doe. Ik ben geen held met Docker dus kom er helaas niet meer uit.

Beste antwoord (via Orthodroom op 01-04-2024 22:29)


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 02-07 20:30

Hero of Time

Moderator LNX

There is only one Legend

Als je SELinux van Enforcing naar Permissive hebt verandert (dat vereist namelijk geen herstart, terwijl volledig uitschakelen dat wel eist) kan je in je SELinux log vinden wat het zou hebben gestopt. Daarmee zou je extra policies kunnen maken. Het zou zelfs zo eenvoudig kunnen zijn als een boolean omzetten of de juiste context op je mappen (lokaal) zetten.

Commandline FTW | Tweakt met mate

Alle reacties


Acties:
  • 0 Henk 'm!

  • Orthodroom
  • Registratie: December 2014
  • Niet online
Ik heb een gedeeltelijke oplossing gevonden en een workaround voor de rest. Het probleem zat hem in SELinux.

Omdat ik podman gebruik i.p.v. docker moet het commando kennelijk dit zijn:
code:
1
podman run --rm -it -p 4000:4000 -v "$PWD":/app:z -w /app localhost/orthodroom/jekyll:latest


Het verschil zit in de : z achter :/app. Dat zorgt kennelijk voor de juiste SELinux labels.
In mijn geval zorgde het echter alleen voor leesrechten en nog niet voor schrijfrechten. Na het uitzetten van SELinux werkt Jekyll zoals verwacht. Voor nu even goed genoeg. Als iemand nog een idee heeft hoe ik ook schrijfrechten krijg met SELinux aan, hoor ik het graag.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 02-07 20:30

Hero of Time

Moderator LNX

There is only one Legend

Als je SELinux van Enforcing naar Permissive hebt verandert (dat vereist namelijk geen herstart, terwijl volledig uitschakelen dat wel eist) kan je in je SELinux log vinden wat het zou hebben gestopt. Daarmee zou je extra policies kunnen maken. Het zou zelfs zo eenvoudig kunnen zijn als een boolean omzetten of de juiste context op je mappen (lokaal) zetten.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Orthodroom
  • Registratie: December 2014
  • Niet online
Ik had het helemaal uitgezet, maar na aanzetten en analyse bleek het inderdaad niet goed te staan. Uiteindelijk viel mij op d.m.v. het commando ls -lZd dat de policy op de folder _site als enige afweek. Die had ik op een gegeven moment handmatig aangemaakt en kennelijk was het effect van : z niet op die folder toegepast (in het begin ook gedraaid zonder die toevoeging). Geen idee of dat dan een bug is of niet, maar na weggooien van die folder en opnieuw draaien van de container met /app:z staat het wel goed ingesteld voor _site en werkt alles dus zoals het moet.

Acties:
  • 0 Henk 'm!

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 07:05

BoAC

Memento mori

Oeps, verkeerd gelezen..

[ Voor 81% gewijzigd door BoAC op 01-04-2024 12:14 ]