Установить ANSIBLE приложение в Docker-контейнер - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть приложение, которое можно установить с ansible.Нет, я хочу создать образ докера, который включает в себя установленное приложение.

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

Я только начинаю с докеров, не могли бы вы посоветовать, если это хорошая идея и как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

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

Не обращая внимания на конкретные детали инструментов, важная вещь в последовательности docker build заключается в том, что у вас проверен какой-то файлв систему контроля версий, которую автоматизированный процесс может использовать для создания образа Docker.Ansible playbook в сочетании с шаблоном Packer JSON будет соответствовать этому же базовому требованию.

Здесь важно то, что между средой исполнения Docker и системой с открытым исходным кодом или виртуальной машиной есть несколько ключевых отличий, которые выОбычно он настраивается с помощью Ansible: маловероятно, что вы сможете использовать свою существующую игровую книгу без изменений.Например, если ваша книга воспроизведения пытается сконфигурировать системные демоны, установить системный файл systemd, добавить пользователей ssh ​​или другие стандартные системные административные задачи, они, как правило, не актуальны и не полезны в Docker.

Я бы предложилсделать хотя бы одну попытку упаковать ваше приложение, используя стандартный Dockerfile, чтобы действительно понять экосистему.Не ожидайте, что сможете использовать Ansible playbook без изменений в среде Docker;но если ваша организация имеет большой опыт работы с Ansible, и вы можете легко отделить «установить приложение» от «настроить сервер», предложенный вами путь технически приемлем.

0 голосов
/ 18 апреля 2019

Вы можете использовать многоэтапные сборки в Docker, что может быть хорошим решением:

FROM ansible/centos7-ansible:stable as builder
COPY playbook.yaml .
RUN ansible-playbook playbook.yaml

FROM alpine:latest # Include whatever image you need for your application
# Add required setup for your app
COPY --from=builder . . # Copy files build in the ansible image, aka your app
CMD ["<command to run your app>"]

Надеюсь, пример достаточно ясен для создания вашего Dockerfile

...