2017-07-24 3 views
0

ich den folgenden Befehl leite starten Jekyll mit meiner lokal ausgecheckt Jekyll-basierten Website:Passing Argument Docker Befehl ausführen

docker run -p 4000:4000 --volume=$PWD:/srv/jekyll \ 
-it jekyll/jekyll:$JEKYLL_VERSION jekyll serve 

Das funktioniert ganz gut. Allerdings, wenn ich es das --baseurl Argument wie folgt passieren:

docker run -p 4000:4000 --volume=$PWD:/srv/jekyll \ 
-it jekyll/jekyll:$JEKYLL_VERSION jekyll serve --baseurl '' 

Alles läuft wieder gut, bis es zu diesem Punkt bekommt:

> docker run -p 4000:4000 --volume=$PWD:/srv/jekyll -it jekyll/jekyll:$JEKYLL_VERSION jekyll serve --baseurl '' 
Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.15.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. 
The following gems are missing 
* jekyll (3.5.0) 
Install missing gems with `bundle install` 
Warning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (1.15.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. 
Fetching gem metadata from https://rubygems.org/........... 
Fetching version metadata from https://rubygems.org/.. 
Fetching dependency metadata from https://rubygems.org/. 
Using public_suffix 2.0.5 
Using bundler 1.15.2 
Using colorator 1.1.0 
Using ffi 1.9.18 
Using forwardable-extended 2.6.0 
Using rb-fsevent 0.10.2 
Using kramdown 1.14.0 
Using liquid 4.0.0 
Using mercenary 0.3.6 
Using rouge 1.11.1 
Using safe_yaml 1.0.4 
Using jekyll-paginate 1.1.0 
Using addressable 2.5.1 
Using rb-inotify 0.9.10 
Using pathutil 0.14.0 
Using sass-listen 4.0.0 
Using listen 3.0.8 
Using sass 3.5.1 
Using jekyll-watch 1.5.0 
Using jekyll-sass-converter 1.5.0 
Fetching jekyll 3.5.0 
Installing jekyll 3.5.0 
Using jekyll-feed 0.9.2 
Bundle complete! 3 Gemfile dependencies, 22 gems now installed. 
Use `bundle info [gemname]` to see where a bundled gem is installed. 
The latest bundler is 1.15.3, but you are currently running 1.15.2. 
To update, run `gem install bundler` 
/usr/lib/ruby/gems/2.3.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:31:in `go': missing argument: --baseurl (OptionParser::MissingArgument) 
    from /usr/lib/ruby/gems/2.3.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program' 
    from /usr/lib/ruby/gems/2.3.0/gems/jekyll-3.5.0/exe/jekyll:13:in `<top (required)>' 
    from /usr/bin/jekyll:22:in `load' 
    from /usr/bin/jekyll:22:in `<main>' 

Warum ist das passiert und wie gebe ich das --basepath Argument zum jekyll Befehl? Scheint so, als ob ich mit Docker etwas falsch mache, was ich neu bin.

Danke!

+0

Versuchen Sie es mit --baseurl '/' oder entfernen Sie es. – marcanuy

Antwort

0

Basierend auf der Dokumentation unter https://docs.docker.com/v1.7/reference/run/#env-environment-variables können Sie es mit dem Befehl docker run mit dem Parameter -e übergeben.

Dies ist, was ich in einem einfachen Skript ausführen getestet:

# Start Jekyll and watch for changes 
docker run --rm -it \ 
    -e JEKYLL_ENV=production \ 
    --volume=/$(pwd):/srv/jekyll \ 
    --publish 4000:4000 \ 
    $DOCKER_IMAGE_NAME 

Das Bild einfach grahamc ist/jekyll. Ich habe versucht, -e BASEURL = "" \ zum obigen Befehl docker run hinzuzufügen. Ich habe jedoch festgestellt, dass, wenn in _config.yml ein baseurl gesetzt war, diese Einstellung die Umgebungseinstellung übertrifft.

+0

Das erfordert die Definition dieser Variablen in einer Dockerfile, oder? Wie könnte ich '--bashurl ''' nur eine einfache Befehlszeile ausführen? – user1902183

Verwandte Themen