Doker构建服务ruby+jekyll

Posted huisebug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Doker构建服务ruby+jekyll相关的知识,希望对你有一定的参考价值。

Doker构建服务

构建Jekyll服务错误演示

这个Dockerfile是无法执行成功的,遇到的一些错误,列举出来

[root@docker ~]# mkdir jekyll

[root@docker ~]# cd jekyll/

[root@docker jekyll]# vim Dockerfile

 

FROM ubuntu:14.04

MAINTAINER wyf

ENV REFRSHED_AT 2017-07-07

 

RUN apt-get -yqq update

RUN apt-get -yqq install ruby2.0ruby2.0-dev make nodejs

RUN rm -rf /usr/bin/ruby2&& ln -s /usr/bin/ruby2.0 /usr/bin/ruby && ruby -v

RUN gem install --no-rdoc --no-ri jekyll

 

VOLUME /date

VOLUME /var/www/html

WORKDIR /date

 

ENTRYPOINT ["jekyll","build","--destination=/var/www/html" ]

安装中的一些报错:

安装一个Ruby支持的Jekyll程序,这里会出现ruby版本过低,所以我加上一条修改ruby指向的链接,红色字体。这样虽然指定了ruby的版本,ruby-dev的版本又无法指定。

修改Dockerfile的内容,改用RVM管理工具来安装,又出现无法使用bash的source命令,那是因为使用Ubuntu的系统,默认使用sh指向的是dash,dash比bash解析脚本快,但缺失一些命令,所以改用centos来进行操作。安装RVM后,需要执行RVM的脚本,执行后无法加入到全局环境变量,使用source /etc/profile也不行,在Dockerfile中必须使用ENV来添加变量

 

构建Jekyll正确方式

[root@docker jekyll]# ls

Dockerfile Gemfile

 

Gemfile的内容

[root@docker jekyll]# vim Gemfile

 

source "https://rubygems.org"

 

# Hello! This is where you manage whichJekyll version is used to run.

# # When you want to use a differentversion, change it below, save the

# # file and run `bundle install`. RunJekyll with `bundle exec`, like so:

# #

# #    bundle exec jekyll serve

# #

# # This will help ensure the proper Jekyllversion is running.

# # Happy Jekylling!

gem "jekyll", "3.5.0"

#

# # This is the default theme for newJekyll sites. You may change this to anything you like.

gem "minima", "~>2.0"

#

# # If you want to use GitHub Pages, removethe "gem "jekyll"" above and

# # uncomment the line below. To upgrade,run `bundle update github-pages`.

# # gem "github-pages", group::jekyll_plugins

#

# # If you have any plugins, put them here!

group :jekyll_plugins do

   gem "jekyll-feed", "~> 0.6"

end

#

#   # Windows does not include zoneinfo files, so bundle the tzinfo-data gem

gem 'tzinfo-data', platforms: [:mingw,:mswin, :x64_mingw, :jruby]

#

~                                                                          

Dockerfile内容

 [root@dockerjekyll]# vim Dockerfile

 

FROM centos:6

MAINTAINER wyf

ENV REFRSHED_AT 2017-07-07

 

RUN yum -y install curl

RUN gpg --keyserver hkp://keys.gnupg.net--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

 

#RUN curl -Lhttps://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer| bash -s stable

RUN /usr/bin/curl -sSL https://get.rvm.io |bash -s stable

 

RUN source /usr/local/rvm/scripts/rvm

RUN echo"ruby_url=https://cache.ruby-china.org/pub/ruby" >/usr/local/rvm/user/db

 

 

ENV PATH=$PATH:/usr/local/rvm/bin

RUN env

 

RUN rvm requirements

#安装ruby2.4.1

RUN rvm install 2.4.1

RUN rvm use 2.4.1 --default

ENV PATH=$PATH:/usr/local/rvm/gems/ruby-2.4.1/wrappers

RUN ruby -v

RUN gem -v

 

RUN gem sources --addhttps://gems.ruby-china.org/ --remove https://rubygems.org/

 

#安装bundle

RUN gem install bundle

RUN bundle -v

RUN mkdir jekyll

COPY ./Gemfile /jekyll/

RUN cd /jekyll &&  bundle install

 

#在非docker环境中应该是直接执行下面的命令安装jekyll,但是在安装的时候会提示,在后面讲解。

#RUN gem install  jekyll

VOLUME /date

VOLUME /var/www/html

WORKDIR /date

 

ENTRYPOINT ["jekyll","build","--destination=/var/www/html" ]

 

 

 

讲解

为什么在dockerfile无法安装成功,下面的操作是在容器中进行安装操作,绿色部分在dockerfile无法跳过,反正我是无法跳过,也请大神们指出方法,所以为了避免,只有使用bundle来安装jekyll

如果不使用bundle来安装jekyll,就会是这个错误,外国网站也有这个错误。

 

 


以上是关于Doker构建服务ruby+jekyll的主要内容,如果未能解决你的问题,请参考以下文章

ruby 当Jekyll构建完成时,向OS X通知中心发布消息。需要TerminalNotifier,请参阅http://git.io/5X99Eg或“gem

Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站

Mac OS 下Ruby gem的一些坑

在 Windows 上为 jekyll 安装 rouge 代码荧光笔

Docker学习6:使用docker构建Jekyll服务和java服务

win7 运行 jekyll --server 失败