Не удалось запустить aliyun-cli в Docker: стабильном контейнере после его установки. Ошибки, так как команда не найдена

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

Так. В настоящее время я создаю образ на основе Docker: stable, то есть альпийского дистрибутива, в котором будет установлен aliyun-cli, доступный для использования. Однако при запуске я получаю странную ошибку «Команда не найдена». Я следил за руководством здесь https://partners-intl.aliyun.com/help/doc-detail/139508.htm и переместил двоичный файл aliyun в / usr / sbin

Вот, например, мой Dockerfile

FROM docker:stable

RUN apk update && apk add curl

#Install python 3
RUN apk update && apk add python3 py3-pip

#Install AWS Cli

RUN pip3 install awscli --upgrade

# Install Aliyun CLI
RUN curl -L -o aliyun-cli.tgz https://aliyuncli.alicdn.com/aliyun-cli-linux-3.0.30-amd64.tgz
RUN tar -xzvf aliyun-cli.tgz
RUN mv aliyun /usr/bin
RUN chmod +x /usr/bin/aliyun
RUN rm aliyun-cli.tgz

Однако, когда я запускаю aliyun (который может быть заполнен автоматически), я получаю это

/ # aliyun 
sh: aliyun: not found

Я пробовал переместить его в другие корзины. Заходите в папку и вызывая ее явно, но всегда получайте команду, которая не найдена. Любые предложения приветствуются.


person devnull    schedule 10.06.2020    source источник
comment
Бинарный файл aliyun-cli-linux-3.0.30-amd64.tgz не подходит для использования с Alpine Linux (несовместим с musl-libc). Посмотрите ответ Adiii.   -  person valiano    schedule 16.06.2020


Ответы (2)


Вы проверяли этот Dockerfile?

Также, почему вам нужно установить aws-cli в том же образе и почему вам нужно будет поддерживать его для себя, когда AWS предоставляет управляемое aws-cli изображение.

docker run --rm -it amazon/aws-cli --version

это все для образа aws-cli, но если вы хотите в существующем образе, вы можете попробовать

RUN pip install awscli --upgrade

DockerFile

FROM python:2-alpine3.8

LABEL com.frapsoft.maintainer="Maik Ellerbrock" \
      com.frapsoft.version="0.1.0"

ARG SERVICE_USER

ENV SERVICE_USER ${SERVICE_USER:-aliyun}

RUN apk add --no-cache curl
RUN curl https://raw.githubusercontent.com/ellerbrock/docker-collection/master/dockerfiles/alpine-aliyuncli/requirements.txt > /tmp/requirements.txt
RUN \
  adduser -s /sbin/nologin -u 1000 -H -D ${SERVICE_USER} && \
  apk add --no-cache build-base && \
  pip install aliyuncli && \
  pip install --no-cache-dir -r /tmp/requirements.txt && \
  apk del build-base && \
  rm -rf /tmp/*

USER ${SERVICE_USER}

WORKDIR /usr/local/bin

ENTRYPOINT [ "aliyuncli" ]

CMD        [ "--help" ]

построить и запустить

docker build -t aliyuncli .
docker run -it --rm aliyuncli

вывод

 docker run -it --rm abc aliyuncli
usage: aliyuncli <command> <operation> [options and parameters]
<aliyuncli> the valid command as follows:

batchcompute                                | bsn       
bss                                         | cms       
crm                                         | drds      
ecs                                         | ess       
ft                                          | ocs       
oms                                         | ossadmin  
ram                                         | rds       
risk                                        | slb       
ubsms                                       | yundun    

person Adiii    schedule 11.06.2020
comment
Я нашел решение и отправлю ответ, но, как правило, я бы никогда не загрузил какое-то случайное решение разработчика вместо официального способа сделать это. Так что простое использование стороннего решения не поможет. - person devnull; 18.06.2020

После долгого поиска я обнаружил проблему с github в официальном aliyun-cli, в которой описывается, что он несовместим с alpine linux из-за того, что он несовместим с muslc.

Ссылка здесь: https://github.com/aliyun/aliyun-cli/issues/54

Следуя описанным здесь обходным путям, я создаю многоступенчатый файл докеров со следующим, который просто решает мою проблему.

Dockerfile

#Build aliyun-cli binary ourselves because of issue
#in alpine https://github.com/aliyun/aliyun-cli/issues/54
FROM golang:1.13-alpine3.11 as cli_builder
RUN apk update && apk add curl git make
RUN mkdir /srv/aliyun
WORKDIR /srv/aliyun
RUN git clone  https://github.com/aliyun/aliyun-cli.git
RUN git clone https://github.com/aliyun/aliyun-openapi-meta.git
ENV GOPROXY=https://goproxy.cn

WORKDIR aliyun-cli
RUN make deps; \
    make testdeps; \
    make build;

FROM docker:19

#Install python 3 & jq
RUN apk update && apk add python3 py3-pip python3-dev jq

#Install AWS Cli

RUN pip3 install awscli --upgrade

# Install Aliyun CLI from builder
COPY --from=cli_builder /srv/aliyun/aliyun-cli/out/aliyun /usr/bin


RUN aliyun configure set --profile default --mode EcsRamRole --ram-role-name build --region cn-shanghai

person devnull    schedule 18.06.2020