2015-11-06 109 views
3

我想使用docker部署rails应用程序。 我跟着官方教程做的事:如何使用Dockerfile文件运行软件包安装

https://docs.docker.com/compose/rails/

但似乎我不是幸运。

我Dockerfile

FROM ruby:2.2.2 

RUN apt-get update -qq && apt-get install -y build-essential 

# for mysql 
RUN apt-get install -y mysql-client libmysqlclient-dev 

# for a JS runtime 
RUN apt-get install -y nodejs 

ENV APP_HOME /myapp 
RUN mkdir $APP_HOME 
WORKDIR $APP_HOME 

ADD Gemfile $APP_HOME/Gemfile 
ADD Gemfile.lock $APP_HOME/Gemfile.lock 

RUN bundle install 

ADD . $APP_HOME 

我的搬运工,compose.yml

db: 
    image: mysql 
    ports: 
    - "3306:3306" 
web: 
    build: . 
    command: bundle exec rails s -p 3000 -b '0.0.0.0' 
    volumes: 
    - .:/myapp 
    ports: 
    - "3000:3000" 
    links: 
    - db 

我跑docker-compose build后,它显示:

... 
Fetching git://github.com/guard/guard-test.git 
/usr/local/bundle/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:94:in `[]': invalid byte sequence in US-ASCII (ArgumentError) 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:94:in `strip_leading_spaces' 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:99:in `word_wrap' 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:85:in `tell_me' 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/ui/shell.rb:31:in `error' 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/friendly_errors.rb:12:in `rescue in with_friendly_errors' 
    from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/friendly_errors.rb:7:in `with_friendly_errors' 
    from /usr/local/bundle/gems/bundler-1.10.6/bin/bundle:18:in `<top (required)>' 
    from /usr/local/bundle/bin/bundle:23:in `load' 
    from /usr/local/bundle/bin/bundle:23:in `<main>' 
ERROR: Service 'web' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code: 1 

有什么不对?

+0

你可以添加一个'出口LANG = C.UTF-8'(在https://github.com/koken/docker-koken-lemp/blob/master/Dockerfile#L12,HTTP后: //www.stackoverflow.com/a/14840029/6309) – VonC

+0

@VonC谢谢。你是对的。我补充说。有用!你可以把它写下来作为答案吗?我会接受它。 – scho

回答

3

综观 “bundle install error “invalid byte sequence in US-ASCII (ArgumentError)”” 类似的错误,一个选择是广告的Dockerfile:

export LANG=C.UTF-8 

this Dockerfile例如。

# Install required packages 
# LANG=C.UTF-8 line is needed for ondrej/php5 repository 
RUN \ 
    export LANG=C.UTF-8 && \ 
    ... 
+0

但这还不够。新问题是:'sidekiq_1 | /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/source/git/git_proxy.rb:155:in'allowed_in_path':git source git://github.com/guard/guard-test .git尚未检出。在尝试启动应用程序(Bundler :: GitError)之前,请运行'bundle install'。 – scho

+0

@scho你可以用你的Dockerfile和错误信息提出一个新的问题吗? – VonC

+0

是的。我在这里问:http://stackoverflow.com/questions/33564984/how-to-install-guard-test-with-docker – scho