Azure CLI в Docker контейнере - PullRequest
0 голосов
/ 26 мая 2020

У меня есть образ Ubuntu 18.04 Docker, который мне нужен Azure CLI, установленный. Для образа Docker кажется, что предпочтительным способом является использование pip, однако у меня есть другой пип Azure библиотеки, необходимые в контейнере, которые пересекаются с установкой CLI и не выдерживают критики, потому что Azure CLI требует более старых версий; затем сделать так, чтобы я не мог запускать свои python скрипты.

Я пытался использовать установщик сценария , но он не работал и вызывал ошибки, потому что я считаю, что установка интерактивна.

Последний вариант, который я могу найти, - это manual apt install , хотя я не уверен, что это правильный способ, и у меня нет хорошего представления о том, как воспроизвести это в Dockerfile.

Есть ли предпочтительный / хороший способ получить Azure CLI в контейнере, не использующем pip?

    FROM ubuntu:18.04

    RUN apt-get update && apt-get -y upgrade && \
        apt-get -f -y install curl python3-pip python-pip && \
        pip3 install --upgrade pip && \
        pip2 install --upgrade pip && \
        pip3 install azure-storage-blob==12.3.0 & \\
        pip3 install azure-cli

1 Ответ

1 голос
/ 27 мая 2020

Я предпочитаю использовать диспетчер пакетов для установки зависимостей, поэтому я сделаю что-то вроде этого:

  • Добавить базовые зависимости для репоста https и curl
  • Добавить gpg ключ и репозиторий для CLI
  • Добавьте CLI

Это Dockerfile с этими шагами:

FROM ubuntu:18.04
RUN apt-get update && apt-get -y upgrade && \
    apt-get -f -y install curl apt-transport-https lsb-release gnupg python3-pip python-pip && \
    curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.asc.gpg && \
    CLI_REPO=$(lsb_release -cs) && \
    echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ ${CLI_REPO} main" \
    > /etc/apt/sources.list.d/azure-cli.list && \
    apt-get update && \
    apt-get install -y azure-cli && \
    rm -rf /var/lib/apt/lists/*

Кроме того, я очищаю apt кеш, удалив /var/lib/apt/lists. Tt уменьшает размер изображения, поскольку кеш apt не хранится в слое.

...