У меня возникла проблема, связанная с использованием docker compose в python (для использования функции docker_service в Ansible), но ее невозможно установить с помощью pip из-за сетевой политики компании (виртуальная машина не имеет доступа к сети только для доступа к RPM). Я, хотя я могу использовать репозиторий yum, содержащий компоновку докеров.
Я попытался установить "docker compose" (версия 1.18.0) с помощью yum. Хотя python не признает, что docker compose и предлагает мне использовать pip: "Невозможно загрузить компоновку docker. Попробуйте pip install docker-compose
Поскольку в большинстве случаев я могу решить эту проблему, установив это с помощью yum install python-, я уже смотрел веб-сайт для пакета под названием python -d ocker-compose, но никакого результата :(
минималистический сценарий для тестирования:
- name: Run using a project directory
hosts: localhost
gather_facts: no
tasks:
- docker_service:
project_src: flask
state: absent
надеюсь, кто-то может помочь.
РЕШЕНИЕ:
После некоторого копания я решил проблему, выполнив локальную загрузку на компьютере с доступом в Интернет:
pip загрузить -d/tmp/docker-compose-local docker-compose
архивирование всех пакетов, загруженных в папку
cd tmp tar -czvf docker-compose-python.tgz./docker-compose-local
так как общий размер пакета немного больше, чем 1 Мбайт, я добавил файл в роль незанятого докера.
В роли docker выполняется локальная установка:
cd/tmp tar -xzvf docker-compose-python.tgz pip install --no-index - файл ссылок: /tmp/docker-compose-local/docker_compose
После некоторого копания я решил проблему, выполнив локальную загрузку на компьютере с доступом в Интернет:
pip загрузить -d/tmp/docker-compose-local docker-compose
архивирование всех пакетов, загруженных в папку
cd tmp
tar -czvf docker-compose-python.tgz./docker-compose-local
так как общий размер пакета немного больше, чем 1 Мбайт, я добавил файл в роль незанятого докера.
В роли docker выполняется локальная установка:
cd/tmp
tar -xzvf docker-compose-python.tgz
pip install --no-index --find-links file: /tmp/docker-compose-local/docker_compose
Используйте виртуальную среду!
если вы не можете этого сделать, это зависит от того, не должна ли политика компании писать на всех python (тогда вы в порядке), или вы не можете использовать pip (даже в своей собственной среде). Если вы МОЖЕТЕ сделать это, тогда:
virtualenv docker_compose -p python3
source docker_compose/bin/activate
pip install docker-compose
Вы получаете весь этот мусор:
Collecting docker-compose
Downloading https://files.pythonhosted.org/packages/67/03Collecting docker-pycreds>=0.3.0 (from docker<4.0,>=3.4.1->docker-compose)
Downloading https://files.pythonhosted.org/packages/ea/bf/7e70aeebc40407fbdb96fa9f79fc8e4722ea889a99378303e3bcc73f4ab5/docker_pycreds-0.3.0-py2.py3-none-any.whl
Building wheels for collected packages: PyYAML, docopt, texttable, dockerpty
Running setup.py bdist_wheel for PyYAML ... done
Stored in directory: /home/eserrasanz/.cache/pip/wheels/ad/da/0c/74eb680767247273e2cf2723482cb9c924fe70af57c334513f
Running setup.py bdist_wheel for docopt ... done
Stored in directory: /home/eserrasanz/.cache/pip/wheels/9b/04/dd/7daf4150b6d9b12949298737de9431a324d4b797ffd63f526e
Running setup.py bdist_wheel for texttable ... done
Stored in directory: /home/eserrasanz/.cache/pip/wheels/99/1e/2b/8452d3a48dad98632787556a0f2f90d56703b39cdf7d142dd1
Running setup.py bdist_wheel for dockerpty ... done
Stored in directory: /home/eserrasanz/.cache/pip/wheels/e5/1e/86/bd0a97a0907c6c654af654d5875d1d4383dd1f575f77cee4aa
Successfully installed PyYAML-3.13 cached-property-1.5.1 certifi-2018.8.24 chardet-3.0.4 docker-3.5.0 docker-compose-1.22.0 docker-pycreds-0.3.0 dockerpty-0.4.1 docopt-0.6.2 idna-2.6 jsonschema-2.6.0 requests-2.18.4 six-1.11.0 texttable-0.9.1 urllib3-1.22 websocket-client-0.53.0
Чтобы получить ответ от E.Serra, вы можете использовать возможность создания виртуального пространства, использовать pip и установить docker-compose в одну задачу таким образом.
- pip:
name: docker-compose
virtualenv: /my_app/venv
Я думаю, вы должны иметь возможность устанавливать с помощью curl из GitHub, предполагая, что это не блокируется вашей сетевой политикой. Ссылка: https://docs.docker.com/compose/install/#install-compose.
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
# Outputs: docker-compose version 1.22.0, build 1719ceb
Надеюсь это поможет.