Создать новое изображение или поделиться исходным кодом в томе в контейнере Docker в разработке? - PullRequest
0 голосов
/ 20 февраля 2019

Мне интересно, что было бы наилучшей практикой для обновления исходного кода в Docker-контейнере, который выполняется внутри (в JAVA и Python).Я мог бы либо изменить свой код, создать новое изображение и запустить контейнер.В Java мне также нужно было бы скомпилировать код.Другое решение состоит в том, чтобы просто использовать том для совместного использования кода между моей машиной и контейнером, чтобы каждый раз, когда я изменял поведение своего кода, мне не нужно было создавать новый образ докера.

I 'Я спрашиваю все это для целей разработки, а не для развертывания. Есть ли передовая практика между этими двумя решениями?Каковы плюсы и минусы?Есть ли разница для скомпилированного языка, такого как Java, по сравнению с Python?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы должны создать новый образ, и если вы думаете, что создание нового образа и его развертывание - это задача для вас, вы можете настроить конвейер CI / CD, который автоматически скомпилирует код Java, создаст образ и развернет его дляВы всякий раз, когда вы нажимаете код в GIT.

0 голосов
/ 20 февраля 2019

Как правило, рекомендуется создать новое изображение, когда у вас есть новый исходный код, и запустить новый контейнер из этого изображения.Docker может быстро создавать и запускать новые образы, поэтому вы должны воспользоваться этим.Кроме того, вы можете узнать, какую версию своего кода вы используете, пометив свои изображения.

Вы упоминаете, что вам нужно будет скомпилировать код Java в случае с Docker, но вам потребуется в любом случае.Вы можете просто скомпилировать свой код в Jar, а затем ДОБАВИТЬ (или скопировать) Jar в свой контейнер и запустить его там.

Пара быстрых недостатков, которые приходят на ум с подходом внешнего кода: вам потребуетсякакой-то внешний способ управления версией кода, за которой позаботятся теги Docker.Вам также понадобится какой-то способ предупредить контейнер Docker о готовности нового исполняемого файла, а затем запустить Docker.Кроме того, вам необходимо убедиться, что ваш контейнер Docker работает на той же версии Java (или Python), на которой работает ваша система, об этом тоже заботятся в Docker, поскольку вы можете создавать из базового образа Java.

0 голосов
/ 20 февраля 2019

Вы определенно должны создать новый образ вместо того, чтобы делиться кодом через подключенный том.Тогда вся идеология докера заключается в создании автономного «сервиса», который может переноситься на сервер (т. Е. Копировать изображение).Докерский файл Yuo и процесс построения изображения будут отслеживать версии вашего кода, т.е. в вашем докерном файле вы можете тянуть определенную ветку или можете пометить изображение определенным тегом.В случае смонтированного тома вы никогда не знаете, какая версия вашего кода на самом деле.бежать.

Надеюсь, что одна только эта причина поможет вам принять решение.

...