代码之家  ›  专栏  ›  技术社区  ›  Saqib Ali

基于图片“python:2.7”的AWS CLI在docker容器中的安装

  •  3
  • Saqib Ali  · 技术社区  · 6 年前

    FROM python:2.7
    RUN pip install awscli --upgrade --user
    

    从这个dockerfile生成docker映像后,我运行它。但当我进入容器并尝试运行AWS CLI时,它找不到它,因为它不在PATH环境变量中:

    $ docker exec -ti ec4934370e37 /bin/bash
    
    root@ec4934370e37:~# aws
    bash: aws: command not found
    
    root@ec4934370e37:/# find / -name aws
    /root/.local/bin/aws
    
    root@ec4934370e37:/# /root/.local/bin/aws --version
    aws-cli/1.15.81 Python/2.7.15 Linux/4.9.87-linuxkit-aufs botocore/1.10.80
    
    root@ec4934370e37:/# env | grep PATH
    PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    

    2 回复  |  直到 6 年前
        1
  •  6
  •   anthony sottile    6 年前

    你有两个选择。

    首先是明确地把 root 用户在上的本地bin PATH 有点像

    ENV PATH=/root/.local/bin:$PATH
    

    --user 关于你的争论 pip install . 默认情况下, pip 应该写信给 /usr/local/bin 路径 已经

        2
  •  5
  •   Oleg Neumyvakin    5 年前

    aws 在您的CI服务器上:

    FROM python:alpine
    
    ARG CLI_VERSION=1.16.310
    
    RUN pip install --no-cache-dir awscli==$CLI_VERSION && \
        mkdir /root/.aws
    
    VOLUME /root/.aws/
    
    ENTRYPOINT ["/usr/local/bin/aws"]
    

    生成并标记为 自动气象站 :

    docker build -t aws .
    

    docker run --rm -v /root/aws-cli/.aws:/root/.aws -ti aws ecr get-login --no-include-email --region us-west-2
    

    或:

    docker run --rm -e  AWS_ACCESS_KEY_ID=AKIABCDEFGHIJKLMONP -e "AWS_SECRET_ACCESS_KEY=abcdefghijklmnopqrstvwxyz" -ti aws ecr get-login --no-include-email --region us-west-2