Ошибка externally-managed-environment при установке docker-compose через Ansible и pip
Ошибка «externally-managed-environment» указывает на то, что pip
используется в окружении, которое управляется извне (например, в системном окружении, где управление пакетами осуществляется через менеджер пакетов, такой как APT). Это часто встречается на современных версиях Ubuntu и других дистрибутивах, где установка Python-пакетов с использованием pip
вне виртуального окружения может быть ограничена.
Чтобы обойти эту проблему и корректно установить docker-compose
, можно использовать следующие подходы:
1. Установить docker-compose
через APT
Если docker-compose
доступен через APT-репозитории, это будет самым простым решением:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
--- - hosts: all become: yes tasks: - name: Update apt cache apt: update_cache: yes - name: Install Docker Compose apt: name: docker-compose state: present - name: Check Docker Compose version command: docker-compose --version register: result - debug: var: result.stdout |
Этот метод не требует использования pip
и не приведет к ошибке «externally-managed-environment».
2. Использовать pip
внутри виртуального окружения
Если вы все же хотите установить docker-compose
через pip
, это можно сделать в виртуальном окружении:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
--- - hosts: all become: yes tasks: - name: Install virtualenv apt: name: python3-virtualenv state: present - name: Create a virtual environment for Docker Compose command: python3 -m virtualenv /opt/docker-compose-env - name: Install Docker Compose in virtual environment command: /opt/docker-compose-env/bin/pip install docker-compose - name: Create symlink to docker-compose in /usr/local/bin file: src: /opt/docker-compose-env/bin/docker-compose dest: /usr/local/bin/docker-compose state: link - name: Check Docker Compose version command: docker-compose --version register: result - debug: var: result.stdout |
В этом подходе создается виртуальное окружение, в котором устанавливается docker-compose
, а затем создается символическая ссылка в /usr/local/bin
для удобного доступа.
3. Использовать бинарный файл Docker Compose
Как уже упоминалось ранее, вы можете установить Docker Compose, загрузив бинарный файл напрямую:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
--- - hosts: all become: yes tasks: - name: Install required packages apt: name: curl state: present update_cache: yes - name: Download Docker Compose binary get_url: url: https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m) dest: /usr/local/bin/docker-compose mode: '0755' - name: Ensure Docker Compose is executable file: path: /usr/local/bin/docker-compose mode: '0755' - name: Check Docker Compose version command: docker-compose --version register: result - debug: var: result.stdout |
docker-compose
будет установлен без использования pip
и не вызовет ошибки «externally-managed-environment».
Recommended Posts
Плейбук Ansible по развертыванию haproxy
15.02.2024