Как обновить Gemfile.замок на узел Docker?
при использовании рельсов внутри контейнера Docker несколько посты (включая один на docker.com) используйте следующий шаблон:
- на
Dockerfile
doADD 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.