Но из того, что я понял, Docker-контейнеры похожи на виртуальные машины и полезны только для создания изолированных сред для тестирования приложения без необходимости думать о зависимостях.
Нет, контейнеры Docker полезны не только для тестирования.
При построении правильного рабочего процесса с помощью Docker вы можете достичь 100% паритета между разработкой, подготовкой и производством, если все используют одни и те же образы докера.
Но, учитывая тот факт, что у нас уже есть сервер для подготовки производства, я не вижу смысла в использовании Docker?Я что-то пропустил?
Этот предварительный рабочий сервер, иначе называемый staging
сервером, должен также использовать docker для запуска кода.
Кроме того, можетМожет ли Docker использоваться для обмена проектами между сотрудниками (все мы работаем под Windows)?(например, разработчик работает над веб-сайтом локально, может ли он создать контейнер и его изображение, которое может быть использовано мгновенно, поскольку другой разработчик не будет конфигурировать его с его стороны?)
Да ... Вы создаете образы базовых докеров только с необходимыми для работы средствами, и из них вы можете создавать другие образы докеров с помощью необходимых инструментов разработчика.
Рабочий образ company/app-name
:
FROM php:alpine
# other your production dependencies here
Предполагая, что они создают образ докера с именем company/app-name
, а затем образ для разработки.
Образ разработки company/app-name-dev
:
FROM company/app-name
# add here only developer tools
Теперь разработчик использует обаИзображения company/app-name
и company/app-name-dev
во время разработки и на промежуточном сервере для запуска кода будет использоваться только company/app-name
образ докера.
После нескольких месяцев взаимодействия в этом потоке вы можете даже начать уверенно начинать работуиспользуя company/app-name
для развертывания приложения в рабочей среде, теперь вы получаете 100%
соотношение между разработкой, подготовкой и производством.
Взгляните на Php Docker Stack для вдохновения, потому что я создал его с этой целью для моей последней работы, но в итоге я покидаю компанию, когда мы находимся в процессе его принятия.в разработке ...
Но не помещайте все необходимые сервисы в один образ докера, потому что это плохая практика в докере, вместо этого используйте один сервис на образ докера, как один сервис для PHP, другой длябазу данных, другую для сервера Nginx и т. д. См. здесь , как несколько сервисов могут быть скомпонованы вместе с docker compose.