2015-06-23 3 views
2

Я следил за Docker Compose Rails tutorial. Это было все в порядке до тех пор, когда я запустить docker-compose run web rails new . --force --database=postgresql --skip-bundle (хорошо хорошо, установка прошла нормально :))Docker Compose Rails Tutorial: Куда делись файлы?

Вот что происходит:

▶ sudo docker-compose run web rails new . --force --database=postgresql --skip-bundle 
Creating dockers_db_1... 
Building web... 
Step 0 : FROM ruby:2.1.4 
---> 766162a99b23 
Step 1 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev 
---> Using cache 
---> 0053b73703c1 
Step 2 : RUN mkdir /myapp 
---> Using cache 
---> bf768c1e06ca 
Step 3 : WORKDIR /myapp 
---> Using cache 
---> 934af3ef8124 
Step 4 : ADD Gemfile /myapp/Gemfile 
---> Using cache 
---> 3666057e0d52 
Step 5 : RUN bundle install 
---> Using cache 
---> e796e93e83d6 
Step 6 : ADD . /myapp 
---> Using cache 
---> 03249ac42a63 
Successfully built 03249ac42a63 
     exist 
     create README.rdoc 
     create Rakefile 
     create config.ru 
     create .gitignore 
     force Gemfile 
     create app 
     create app/assets/images/rails.png 
     create app/assets/javascripts/application.js 
     create app/assets/stylesheets/application.css 
     create app/controllers/application_controller.rb 
     create app/helpers/application_helper.rb 
     create app/mailers 
     create app/models 
     create app/views/layouts/application.html.erb 
     create app/mailers/.gitkeep 
     create app/models/.gitkeep 
     create config 
     create config/routes.rb 
     create config/application.rb 
     create config/environment.rb 
     create config/environments 
     create config/environments/development.rb 
     create config/environments/production.rb 
     create config/environments/test.rb 
     create config/initializers 
     create config/initializers/backtrace_silencers.rb 
     create config/initializers/inflections.rb 
     create config/initializers/mime_types.rb 
     create config/initializers/secret_token.rb 
     create config/initializers/session_store.rb 
     create config/initializers/wrap_parameters.rb 
     create config/locales 
     create config/locales/en.yml 
     create config/boot.rb 
     create config/database.yml 
     create db 
     create db/seeds.rb 
     create doc 
     create doc/README_FOR_APP 
     create lib 
     create lib/tasks 
     create lib/tasks/.gitkeep 
     create lib/assets 
     create lib/assets/.gitkeep 
     create log 
     create log/.gitkeep 
     create public 
     create public/404.html 
     create public/422.html 
     create public/500.html 
     create public/favicon.ico 
     create public/index.html 
     create public/robots.txt 
     create script 
     create script/rails 
     create test/fixtures 
     create test/fixtures/.gitkeep 
     create test/functional 
     create test/functional/.gitkeep 
     create test/integration 
     create test/integration/.gitkeep 
     create test/unit 
     create test/unit/.gitkeep 
     create test/performance/browsing_test.rb 
     create test/test_helper.rb 
     create tmp/cache 
     create tmp/cache/assets 
     create vendor/assets/javascripts 
     create vendor/assets/javascripts/.gitkeep 
     create vendor/assets/stylesheets 
     create vendor/assets/stylesheets/.gitkeep 
     create vendor/plugins 
     create vendor/plugins/.gitkeep 

Так что я, как «О, круто, это работает».

Но тогда мне нужно отредактировать Gemfile. Хозяин Gemfile не изменился:

cat Gemfile 
source 'https://rubygems.org' 
gem 'rails', '3.2.18' 

Так что я думаю, я должен идти в мой грузчик:

▶ sudo docker images       
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
workspace_web  latest    03249ac42a63  8 hours ago   835.3 MB 
dockers_web   latest    03249ac42a63  8 hours ago   835.3 MB 
postgres   latest    7bf0ec35adaf  6 days ago   214 MB 
hello-world   latest    91c95931e552  9 weeks ago   910 B 
ruby    2.1.4    766162a99b23  7 months ago  798.3 MB 

Но есть файл выглядит так же:

▶ sudo docker run -t -i workspace_web /bin/bash 
[email protected]:/myapp# cat Gemfile 
source 'https://rubygems.org' 
gem 'rails', '3.2.18' 

Где сделали генерируются файлы rails new? Ходили вокруг, безуспешно.

Я нахожусь на Debian, поэтому не использую Boot2docker.

Благодаря

+0

Вы вошли в каталог myapp? –

+0

Да. Я действительно начинаю с '/ myapp' (в моем случае' myapp' называется 'copass', но теперь я его редактировал). –

ответ

0

в docker-compose.yml уведомления следующие строки:

volumes: 
- .:/myapp 

/myapp был отображенные в текущей директории вы были, когда вы запускали docker-compose run - так вот где вы должны искать файлы.

, когда вы sudo docker run -t -i workspace_web /bin/bash вы не добавили , поэтому ваша папка с файлами не была смонтирована и остается пустой в контейнере.

+1

вы также можете использовать 'docker inspect -f '{{.Volumes}}" _web_1', чтобы выяснить, где это было. Это проверит контейнер (если он все еще вокруг), compose использует имя каталога, службу и счетчик (для масштабирования), чтобы назвать создаваемые им контейнеры. –

1

docker-rails - проект, который я только что создал, чтобы сделать рельсы с докером (и CI) очень легко. Я думаю, что это может помочь вам и уменьшить количество настроек, необходимых для запуска и работы с рельсами на докере.

Он также поможет вам извлечь извлечения любого из этих файлов обратно на хост. В ходе тестирования производительности, делать что-то вроде:

volumes: 
- .:/myapp 

до 4x медленнее,, так как он монтировании тома . на хосте. Вместо этого, как сделано в примере для docker-rails, используйте DockerfileVOLUME для почти собственной скорости ввода-вывода (обходной любой файловой системы союза) и COPY для вашего каталога проектов. Это означает, что все ваши файлы будут находиться в контейнере, поэтому вам понадобится extract любых необходимых файлов. docker-rails делает это очень легко, так, например, я использую эту добычу для моих тестовых артефактов:

web: 
    extract: 
     - '/project/target' 
     - '/project/vcr' 
     - '/project/tmp' 
     - '/project/log' 

TLDR; есть много трюков, чтобы получить докер/составить бег прямо на рельсы. Оформить заказ docker-rails, он имеет все они в одном месте.

+0

Я посмотрю. благодаря –

Смежные вопросы