Docker Compose доступен в Python без доступа в Интернет - PullRequest
0 голосов
/ 21 сентября 2018

У меня проблема с необходимостью использования docker compose в python (для использования функции docker_service в Ansible), но его невозможно установить с помощью pip из-за сетевой политики компании (виртуальная машина не имеет доступа только к сетидоступ к RPM).Хотя я могу использовать репозиторий yum, который содержит docker compose.

Я пытался установить «docker compose» (версия 1.18.0), используя yum.Хотя python не распознает docker compose и предлагает мне использовать pip: «Невозможно загрузить docker-compose. Попробуйте pip install docker-compose

Поскольку в большинстве случаев я могу решить эту проблему, установив ее с помощью yum install python-,Я уже искал в интернете пакет python-docker-compose, но безрезультатно: (

минималистичный ответный скрипт для теста:

- name: Run using a project directory
  hosts: localhost
  gather_facts: no
  tasks:
    - docker_service:
        project_src: flask
        state: absent

надеюсь, что кто-нибудь может помочь.

РЕШЕНИЕ:

После некоторых копаний я решил проблему, выполнив локальную загрузку на машине с Интернетом:

pip download -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: / tmp / docker-compose-local / docker_compose

Ответы [ 4 ]

0 голосов
/ 25 сентября 2018

После некоторых поисков я решил проблему, выполнив локальную загрузку на машине с Интернетом:

pip download -d / tmp / docker-compose-local docker-compose

архивирование всех пакетов, которые были загружены в папку

cd tmp

tar -czvf docker-compose-python.tgz ./docker-compose-local

, поскольку общий размер пакета немного превышает 1 МБ. Я добавил файл в роль ответственного за сборку.

В роли средства настройки выполняется локальная установка:

cd / tmp

tar -xzvf docker-compose-python.tgz

pip install --no-index - файл найденных ссылок: / tmp / docker-compose-local / docker_compose

0 голосов
/ 21 сентября 2018

Используйте виртуальную среду!

, если вы тоже не можете этого сделать, это зависит от того, не запрещается ли политика компании писать на всех питонах (тогда у вас все хорошо) или вы не можете использовать 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
0 голосов
/ 23 сентября 2018

Чтобы завершить ответ от E.Serra, вы можете использовать ansible для создания virtualenv, используйте pip и установите docker-compose в одну задачу следующим образом.

- pip:
    name: docker-compose
    virtualenv: /my_app/venv
0 голосов
/ 21 сентября 2018

Я думаю, что вы должны быть в состоянии установить 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

Надеюсь, это поможет.

...