Как обновить Gemfile.замок на узел Docker?
при использовании рельсов внутри контейнера Docker несколько посты (включая один на docker.com) используйте следующий шаблон:
- на DockerfiledoADD GemfileиADD Gemfile.lock, потомRUN bundle install.
-  создать новое приложение Rails с docker-compose run web rails new.
так как мы RUN bundle install чтобы построить изображение, кажется, целесообразно docker-compose build web после обновления Gemfile.
это работает так как gemset будет обновляться внутри изображения, но:
на Gemfile.lock на хосте Docker не будет обновляться чтобы отразить изменения Gemfile. Это проблема, потому что:
- Gemfile.lockдолжно быть в вашем репозитории, и:
- он должен быть!--31-->последовательный С вашего текущего - Gemfile.
так:
как можно обновить Gemfile.lock на хосте, поэтому он может быть проверен на контроль версий?
3 ответов
исполнение bundle внутри run тут обновить Gemfile.lock на хозяина:
docker-compose run web bundle
однако: вы должны еще и build еще раз.
TL; DR - внесите изменения в контейнер, запустите пакет на контейнере и перезапустите для хорошей меры. Локально эти изменения будут отражены в вашем приложении и готовы к тестированию/выталкиванию в git, и ваш производственный сервер будет использовать его для перестройки.
Долго; Читать:
- docker exec -it name_of_app_1 bash
- vim Gemfileи поставить что-то вроде- gem 'sorcery', '0.9.0'Я чувствую, что это гарантирует, что вы получите версии вы ищу
- bundleчтобы получить только эту версию в текущем контейнере- Gemfileи- Gemfile.lock
это был полу нормальный тип" рельсов " здесь, просто вы делаете это на контейнере, который работает.  Теперь вам не нужно беспокоиться о git и получать эти изменения. ваше git-РЕПО, потому что все эти изменения происходят на вашей локальной копии. Итак, откройте вкладку терминала и перейдите в свое приложение и less Gemfile и вы должны увидеть изменения.
- теперь вы можете перезапустить запущенный контейнер. Ваш Dockerfile будет перестроен (в моем случае docker-compose upлокально, тесты должны пройти. Тест браузера по желанию.
зафиксируйте изменения в git и используйте процесс развертывания, чтобы проверить его на этапе.
Примечания:
проверяем, что Dockerfile как говорят ссылки OP. Я предполагаю, что у вас есть какой-то bundle или bundle install линия в Dockerfile
чтобы быть ясным, команды для запуска:
docker-compose run web bundle
docker-compose up --build
здесь web это имя вашего приложения Dockerized Rails.
