Я знаю, что Systemd не рекомендуется для контейнеров Docker, но возможно ли это?
У меня есть промежуточные / промежуточные среды на облачных виртуальных машинах Ubuntu 18.04, развернутые с Ansible;
Моя текущая среда разработки -Ubuntu 18.04 Vagrantfile
, которая использует тот же Ansible playbook.yml
staging / prod
Теперь я пытаюсь заменить Vagrantfile
на Dockerfile
для разработки, но Ansible playbook.yml
не удается при применениисистемные модули.Я также хотел бы иметь systemd
в своей среде разработки, чтобы я мог тестировать изменения в своей playbook.yml
локальной сети.Любая идея, как я могу это сделать?
Если я пытаюсь построить с Dockerfile
и playbook.yml
, как показано ниже, я получаю ошибку Failed to find required executable systemctl in paths
.
Если я добавлю RUN apt-get install systemd
Dockerfile
и попытаться построить, я получаю сообщение об ошибке System has not been booted with systemd as init system
Образец Dockerfile
:
FROM ubuntu:18.04
ADD . /app
WORKDIR /app
# Install Python3 pip used to install Ansible
RUN apt-get update && apt-get install -y \
python3-pip \
# Install Ansible
RUN pip3 install --trusted-host pypi.python.org ansible
RUN ansible-playbook playbook.yml -i inventory
EXPOSE 80
Образец playbook.yml
:
---
- name: Ansible playbook to setup dev environment
hosts: all
vars:
ansible_python_interpreter: "/usr/bin/python3"
debug: True
become: yes
become_method: sudo
tasks:
- name: Copy App Gunicorn systemd config
template:
src: app_gunicorn.service
dest: /etc/systemd/system/
- name: Enable App Gunicorn on systemd
systemd: state=started name=app_gunicorn
Образец inventory
:
docker-dev ansible_host=localhost ansible_connection=local