Порядок ваших действий при создании сервисов на Docker?

Добрый день. Хочется получить информацию о Вашем опыте в работе с Docker сервисами.
Пример:
Делаю Docker-compose файл, в нем описываю примитивный web-сервер (Nginx, PHP-FPM, MySQL)
Соответственно все image тяну из Dockerhub.
1) Но у меня есть желание, достать ВСЕ конфиги всех сервисов на локальную машину с помощью volume.
Как я должен получить те конфиги, которые уже находятся в image авторов? Ведь если я буду описывать volume в файле, то в контейнер сразу прокинется моя локальная директория уже с моими конф файлами.

2) Я привык строить системы на LXC, но докер имеет больше преимуществ в моей ситуации. Скажите, Docker-compose в продуктиве - это норма? Как я должен установить, например, еще один модуль для PHP?

3) Знаю про Kubernates и подобное, но для проекта, который по своей сути статичен - он избыточен.

Спасибо!
  • Вопрос задан
  • 861 просмотр
Решения вопроса 1
@XEHKOK
Я обычно стягиваю конфиги софта для новых проектов из оф образов.
1) Можно как просто запулить сбилдить и запустить софт, так и через Dockerfile или даже docker-compose up -d --build, это уже личное дело как религия позволяет)
Вытягиваю обычно так:
PHP:
docker cp имя контейнера или сервиса:/usr/local/etc/php-fpm.conf /var/www/projects/mynewproject/docker/php/php-fpm.conf
docker cp имя контейнера или сервиса:/usr/local/etc/php-fpm.d/www.conf /var/www/projects/mynewproject/docker/php/www.conf
docker cp имя контейнера или сервиса:/usr/local/etc/php/php.ini-development /var/www/projects/mynewproject/docker/php/php.ini
Левые пути это размещение в контейнере конфигов, правые пути это куда копировать на хост системе.
После получения исходных конфигов прописываю их в Dockerfile сервиса PHP:
COPY /var/www/projects/mynewproject/docker/php/php.ini /usr/local/etc/php/php.ini
COPY /var/www/projects/mynewproject/docker/php/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY /var/www/projects/mynewproject/docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf

Правда я делаю это не через волюм конечно, но это опять же вопрос религии)

Собственно аналогично можно вытянуть конфиги и для Nginx:
docker cp имя контейнера или сервиса:/etc/nginx/nginx.conf /var/www/projects/mynewproject/docker/nginx/nginx.conf
docker cp имя контейнера или сервиса:/etc/nginx/conf.d/default.conf /var/www/projects/mynewproject/docker/nginx/default.conf
Для нового Nginx даже вроде есть файл конфига шаблона: /etc/nginx/templates/default.conf.template, который можно взять за основу для виртуалхостов nginx.
Ну а для БД и прочего софта думаю не составит труда поковырять оф образы или погуглить)

2) Если правильно понял на счет модулей ext-php:
Тут несколько вариантов модули которые входят в базовую сборку php можно установить так:
RUN docker-php-ext-install -j$(nproc) soap
Те которые нужно установить и принудительно включить:
RUN docker-php-ext-install -j$(nproc) opcache && docker-php-ext-enable opcache
Еще есть которые нужно конфигурировать вроде zip:
RUN apt-get update && apt-get install -y --no-install-recommends libzip-dev zip
RUN docker-php-ext-configure zip && docker-php-ext-install -j$(nproc) zip
А еще можно ставить из PECL расширения на примере pthreads:
RUN pecl install pthreads && docker-php-ext-enable pthreads

В общем докенезировать можно php проект главное знать основы докера и специфику софта который нужно в этом самом докере поднять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
  1. не знаю зачем вам это нужно, но вижу только такой способ - запустить контейнер и используя docker cp скопировать себе на хост необходимые конфиги.
  2. Композ без использования build вполне можно и на продуктив. Любые модули, как и ваш код, обновляются стандартным методом для Докера - сборкой нового контейнера с обновлёнными модулями, доставка контейнера целиком на прод
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы