Как обновить 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 bashvim 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.