Wie aktualisiere ich Gemfile.lock auf meinem Docker-Host?

8

Wenn Sie Rails in einem Docker-Container verwenden mehrere posten (einschließlich one on docker.com ) verwenden das folgende Muster:

  1. In Dockerfile tun ADD Gemfile und ADD Gemfile.lock , dann RUN bundle install .
  2. Erstellen Sie eine neue Rails App mit docker-compose run web rails new .

Da wir RUN bundle install zum Erstellen des Images verwenden, scheint es nach dem Aktualisieren von docker-compose build web angebracht zu sein, Gemfile .

Dies funktioniert so, als ob der Edelsteinsatz innerhalb des Bildes aktualisiert wird, aber:

Gemfile.lock auf dem Docker-Host wird nicht aktualisiert , um die Änderungen an Gemfile zu berücksichtigen. Dies ist ein Problem, weil:

  1. Gemfile.lock sollte in Ihrem Repository sein und:

  2. Es sollte konsistent mit Ihrer aktuellen Gemfile sein.

Also:

Wie kann man das Gemfile.lock auf dem Host aktualisieren, damit es in die Versionskontrolle eingecheckt werden kann?

    
dukedave 20.06.2016, 16:57
quelle

3 Antworten

5

Wenn bundle in run ausgeführt wird, wird das Gemfile.lock auf dem Host aktualisiert:

%Vor%

Allerdings: Sie müssen immer noch auch build das Bild erneut.

    
dukedave 20.06.2016, 16:57
quelle
1

TL; DR - Nehmen Sie die Änderungen am Container vor, führen Sie das Bundle für den Container aus, und starten Sie den Vorgang erneut. Lokal werden diese Änderungen in Ihrer App widergespiegelt und sind bereit, sie zu testen / zu pushen, und Ihr Produktionsserver wird sie für den Wiederaufbau verwenden.

Lang; Lesen Sie:

  1. docker exec -it name_of_app_1 bash

  2. vim Gemfile und etwas wie gem 'sorcery', '0.9.0' eingeben Ich glaube, das stellt sicher, dass Sie die gesuchte Version erhalten

  3. bundle , um nur diese Version in den Gemfile und Gemfile.lock

  4. des aktuellen Containers zu erhalten

Dies ist ein halb normaler "Rails" -Typ hier, nur Sie tun es auf dem Container, der läuft. Jetzt müssen Sie sich keine Gedanken mehr über Git machen und diese Änderungen erhalten. Ihr Git Repo, weil diese Änderungen alle auf Ihrer lokalen Kopie geschehen. So wie, öffnen Sie einen Terminal-Tab und gehen Sie in Ihre App und less Gemfile und Sie sollten die Änderungen sehen.

  1. Jetzt können Sie Ihren laufenden Container neu starten. Ihre Dockerfile wird neu erstellt (in meinem Fall von docker-compose up lokal, Tests sollten bestanden werden. Browser-Test nach Belieben.

Übernehmen Sie Ihre Änderungen in git und verwenden Sie Ihren Bereitstellungsvorgang, um das Staging zu überprüfen.

Anmerkungen:

Überprüfen Sie, dass Dockerfile wie die Links des OPs sagen. Ich nehme an, dass Sie eine Art bundle oder bundle install Zeile in Ihrem Dockerfile

haben     
pjammer 12.06.2017 19:59
quelle
0

Nur um klar zu sein, sind folgende Befehle auszuführen:

%Vor%

Dabei steht web für den Namen Ihrer Dockerized Rails-App.

    
DaniG2k 06.11.2017 08:17
quelle

Tags und Links