Обновить приложение

В части 2 вы контейнеризировали приложение todo. В этой части вы обновите приложение и образ контейнера. Вы также узнаете, как остановить и удалить контейнер.

Обновление исходного кода

В описанных ниже шагах вы измените «пустой текст», когда у вас нет элементов списка todo, на «У вас еще нет элементов todo! Добавьте один выше!».

  1. В файле src/static/js/app.js обновите строку 56, чтобы использовать новый пустой текст.

    ...
    -                <p className="text-center">No items yet! Add one above!</p>
    +                <p className="text-center">You have no todo items yet! Add one above!</p>
    ...
    
  2. Соберите обновленную версию образа, используя ту же команду docker build, которую вы использовали в части 2.

    $ docker build -t getting-started .
    
  3. Запустите новый контейнер, используя обновленный код.

    $ docker run -dp 3000:3000 getting-started
    

Вероятно, вы увидели ошибку, подобную этой (идентификаторы будут другими):

docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell
(bb242b2ca4d67eba76e79474fb36bb5125708ebdabd7f45c8eaf16caaabde9dd): Bind for 0.0.0.0:3000 failed: port is already allocated.

Ошибка возникла из-за того, что вы не можете запустить новый контейнер, в то время как старый контейнер все еще работает. Причина в том, что старый контейнер уже использует порт хоста 3000, а только один процесс на машине (включая контейнеры) может прослушивать определенный порт. Чтобы исправить это, необходимо удалить старый контейнер.

Удаление старого контейнера

Чтобы удалить контейнер, сначала необходимо остановить его. После остановки его можно удалить. Вы можете удалить старый контейнер с помощью CLI или графического интерфейса Docker Desktop. Выберите тот вариант, который вам удобнее.

CLI

Удаление контейнера с помощью CLI

  1. Получите идентификатор контейнера с помощью команды docker ps.

    $ docker ps
    
  2. Используйте команду docker stop для остановки контейнера. Замените <the-container-id> на ID из команды docker ps.

    $ docker stop <the-container-id>
    
  3. После остановки контейнера вы можете удалить его с помощью команды docker rm.

    $ docker rm <the-container-id>
    

    Примечание

    Вы можете остановить и удалить контейнер одной командой, добавив флаг force к команде docker rm. Например: docker rm -f <the-container-id>.

Docker Desktop

Удаление контейнера с помощью Docker Desktop

  1. Откройте Docker Desktop и откройте представление Containers (Контейнеры).

  2. Выберите значок мусорной корзины в столбце Actions (Действия) для старого контейнера, который вы хотите удалить.

  3. В диалоговом окне подтверждения выберите Удалить навсегда.

Запустите обновленный контейнер приложения

  1. Теперь запустите обновленное приложение с помощью команды docker run.

    $ docker run -dp 3000:3000 getting-started
    
  2. Обновите браузер на сайте http://localhost:3000, и вы увидите обновленный текст справки.

Updated application with updated empty text

Следующие шаги

В то время как вы смогли создать обновление, вы могли заметить две вещи:

  • Все существующие пункты в вашем списке дел исчезли! Это не очень хорошее приложение! Вы исправите это в ближайшее время.

  • Для такого небольшого изменения необходимо было выполнить множество действий. В следующем разделе вы узнаете, как увидеть обновления кода без необходимости перестраивать и запускать новый контейнер при каждом изменении.

Прежде чем говорить о настойчивости, вы увидите, как делиться этими образами с другими.

Поделиться приложением.