Docker Compose доступен в Python без доступа в Интернет

1

У меня возникла проблема, связанная с использованием 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
centos
ansible
docker-compose

4 ответа

0
Лучший ответ

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

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

2

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

если вы не можете этого сделать, это зависит от того, не должна ли политика компании писать на всех 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
  • 0
    Спасибо за ваши ответы. Я думаю, что это удачное решение для вашего сценария, но, очевидно, моя проблема была не в том, что я не смог установить на машину с помощью pip, а в том, что pip не мог загружать пакеты из Интернета из-за сетевой политики.
  • 0
    тогда вы должны пойти с некоторой установкой из источника, который я предлагаю :(
Показать ещё 1 комментарий
0

Чтобы получить ответ от E.Serra, вы можете использовать возможность создания виртуального пространства, использовать pip и установить docker-compose в одну задачу таким образом.

- pip:
    name: docker-compose
    virtualenv: /my_app/venv
0

Я думаю, вы должны иметь возможность устанавливать с помощью 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

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

  • 0
    Спасибо за ваши ответы. Docker compose действительно устанавливается, когда предоставляется сетевой доступ, но, к сожалению, python по-прежнему выдает сообщение: Невозможно загрузить docker-compose.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню