docker run -it --rm docker:latest sh
wget "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -O "awscliv2.zip"
# curl not installed
unzip awscliv2.zip
./aws/install
# sudo not install
ãšã©ãŒïŒ
/ # ./aws/install
./aws/install: line 78: /aws/dist/aws2: not found
You can now run: /usr/local/bin/aws2 --version
/ # aws2
sh: aws2: not found
åé¡ããããã°ããããšããŸãããã倱æããçç±ãããããŸããã§ããã ã€ã³ã¹ããŒã«ã¹ã¯ãªããã¯å°ãäžå®å®ãªããã§ãã v2ã©ãã«ãè¿œå ããŠã¿ãŸããã
å
¬éãããã€ããªã¯ãglibcã«å¯ŸããŠã³ã³ãã€ã«ããŠããããã alpine
åºã¥ãDockerã€ã¡ãŒãžã§ã¯æ©èœããŸããã sh: aws2: not found
ã¯ããã®ãã€ããªãå®è¡ããããšãããšãã«çºçããããšã§ãã ubuntu:latest
ã®ãããªç»åã§è©ŠããŠã¿ããšãã€ã³ã¹ããŒã©ãŒãæ©èœããŸãã
ããã«ãäžè¬çãªLinuxãã€ããªã®å Žåã®ããã«ãã¢ã«ãã€ã³äºæã®ãã€ããªããªãªãŒã¹ããããšã¯ãªããšæããŸãã ã¢ã«ãã€ã³äžã«æ§ç¯ããããã€ããªã«ä»å±ããDockerã€ã¡ãŒãžããªãªãŒã¹ããåŸåããããšæããŸãã
ãåçæé£ãããããŸãã https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.htmlã®ãLinuxã®åææ¡ä»¶ãã®äžã«ãããææžåããããšããŸãã¯é«å±±ããŒã¹ã§ãšã©ãŒããããŠãŒã¶ãŒãã¬ã³ããªãŒã«ããããšã¯å¯èœã§ããïŒã€ã¡ãŒãžã±ãŒã¹ïŒ
ããã¯ãŠãŒã¶ãŒã¬ã€ãã§å¿ ãæŽæ°ãããŸãã ãã®å ŽåããããŠãŒã¶ãŒãã¬ã³ããªãŒãªãšã©ãŒã¡ãã»ãŒãžãäœæãããšããã¢ã€ãã¢ãæ°ã«å ¥ã£ãŠããŸãã
@joguSDæ®å¿µãã¢ã«ãã€ã³ã¯Dockerã€ã¡ãŒãžã®æšæºã§ãã ç¹ã«ãèªååãæãã§ããŠãéåžžã«å€§ããªDockerã€ã¡ãŒãžãç¶ç¶çã«ããŠã³ããŒãããããªããã«ã/ ciã·ã¹ãã ã®å Žåã
ãã ãããã«ãã¹ããŒãžãã«ãã§å ¬åŒã®ã¢ã«ãã€ã³ããã«ãŒã€ã¡ãŒãžã䜿çšããŠããã€ããªãå¥ã®ããã«ãŒã€ã¡ãŒãžã«ã³ããŒã§ããŸãã
@ chadgrant-å€æ®µéã®dockerfileã®äŸãæããŠããã ããŸããïŒ
@ BarakBD-Globalityç§ã¯æã£ãŠããŸããããaws-alpineã€ã¡ãŒãžãäœæãããå Žåã¯ã次ã®ããã«ããããšãã§ããŸãã
FROM aws_alpine_image:latest as aws
FROM alpine:latest
COPY --from=aws /usr/local/bin/binary /usr/local/bin/binary
æ®å¿µãªããã圌ãã¯é«å±±ããµããŒãããŠããŸããã æšæºç»åã§ãã
ããã«ãäžè¬çãªLinuxãã€ããªã®å Žåã®ããã«ãã¢ã«ãã€ã³äºæã®ãã€ããªããªãªãŒã¹ããããšã¯ãªããšæããŸãã ã¢ã«ãã€ã³äžã«æ§ç¯ããããã€ããªã«ä»å±ããDockerã€ã¡ãŒãžããªãªãŒã¹ããåŸåããããšæããŸãã
@joguSDããã«ã€ããŠäœãè°è«ãåãã¯ãããŸãããïŒ é«å±±ã®è延ãèãããšãããªã倧ããããšã®ããã§ãã ç§ã®ãããªäººã
ã¯ãcicdããã®ä»ã®èªååã§aws
ã䜿çšããŠãããããé«å±±ããŒã¹ã®ç»åã§äœ¿çšã§ããªãå ŽåãããŒãžã§ã³2ã䜿çšããããšã¯ãå€å€§ãªåŽåããªããã°ãªãã·ã§ã³ã§ã¯ãããŸããã ããããšãã
busybox
ãã€ã³ã¹ããŒã«ã§ããŸãã
èå³æ·±ãããšã«ããããããŒã¹ã€ã¡ãŒãžãšããŠäœ¿çšãããšãAWS cliãã€ã³ã¹ããŒã«ãããæ£ããæ©èœããŸãã
ããadoptopenjdk / openjdk11ïŒalpine
次ã®Dockerfileã䜿çšããŠãããè¡ãããšãã§ããŸãã
FROM adoptopenjdk/openjdk11:alpine
RUN apk add --no-cache \
ca-certificates \
unzip \
curl \
groff \
less \
bash \
openssh-client
WORKDIR /home
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& ./aws/install \
&& rm awscliv2.zip \
&& rm -R aws
Adaptopenjdkã€ã¡ãŒãžãæ©èœããçç±ã¯ãæ¬ èœããŠããglibcã©ã€ãã©ãªãå«ãŸããŠããããã§ãã Alphine linuxã¯ãæ¬æ Œçãªglibcã®è»œéãªä»£æ¿æ段ã§ãããmuslglibcãã«åºã¥ããŠããŸãã aws cli v2ãã€ããªã¯muslã§ã¯æ©èœããŸãããæ©èœããã«ã¯ãããã«ããã€ãã®ã©ã€ãã©ãªãå¿ èŠã§ãã
Javaã€ã¡ãŒãžã䜿çšãã代ããã«ãAlpineLinuxã§AWSCLIv2ãå®è¡ããæ¹æ³ã®äŸãšããŠä»¥äžã®Dockerfileã䜿çšããããšãã§ããŸãã
FROM alpine:3.11
ENV GLIBC_VER=2.31-r0
# install glibc compatibility for alpine
RUN apk --no-cache add \
binutils \
curl \
&& curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk \
&& apk add --no-cache \
glibc-${GLIBC_VER}.apk \
glibc-bin-${GLIBC_VER}.apk \
&& curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
&& unzip awscliv2.zip \
&& aws/install \
&& rm -rf \
awscliv2.zip \
aws \
/usr/local/aws-cli/v2/*/dist/aws_completer \
/usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
/usr/local/aws-cli/v2/*/dist/awscli/examples \
&& apk --no-cache del \
binutils \
curl \
&& rm glibc-${GLIBC_VER}.apk \
&& rm glibc-bin-${GLIBC_VER}.apk \
&& rm -rf /var/cache/apk/*
äžèšã§ã¯ãglibcã©ã€ãã©ãªãããŠã³ããŒãããAWS CLI v2ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ãããªãŒãã³ã³ããªãŒããªã©ãããããäžèŠãªãã®ãããã€ãåé€ããŸãã çµæã®ç»åã®ãµã€ãºã¯çŽ100MBã§ã
ã§ã¯ãDockerã³ã³ããå
ã§aws ecr get-login-password ⊠| docker login âŠ
ãå®è¡ããããã®æçãã¹ã¯äœã§ããïŒ ïŒããã¯ã docker:dind
ãæå³ããŸãïŒïŒ
docker:dind
ãµããŒãããç¬èªã®docker:stable
ã€ã¡ãŒãžãäœæããããšã¯é¿ããããšæããŸãã å°ãªããšãã httpsïŒ //github.com/aws/aws-cli/issues/4685#issuecomment-615872019ãœãªã¥ãŒã·ã§ã³ã«æè¬ããããšãã§ã
@bentolor docker:dind
ãã¢ã«ãã€ã³ã䜿çšããŠããã®ã§ãããªããããªããã°ãªããªãã®ã¯ãäžèšã®Dockerfileã®æåã®è¡ãå€æŽããããšã ãã ãšæããŸãã 代ããã«FROM alpine:3.11
ããªãã䜿çšããå¿
èŠããããŸãFROM docker:dind
ã ããããããã¯ããªããããªãèªèº«ã®ã€ã¡ãŒãžãæ§ç¯ããŠããããšãæå³ããŸãã
ããããšã@blagerweijã¯æ¬åœã«ããŸãæ©èœããŸã
ãŸãã @ blagerweijã«æè¬ããŸãããœãªã¥ãŒã·ã§ã³ãã³ããŒããŠè²Œãä»ããããšã§ãã€ã©ã¯ãµãææ¡ãããããªãã¯ãªã«ã¹ã¿ã Dockerã€ã¡ãŒãžãäœæããŸããïŒ https ïŒ
@bentolorç§ã¯ããªãã®Dockerfileã䜿çšããããªãã®ã¬ãã«æ°ã¥ãFROM docker:stable
ã®ä»£ããã«FROM docker:dind
ã èå¿ãªã®ã¯ãAWSããµããŒãããDockerã§Dockerã®ã€ã¡ãŒãžãäœæããããšã ãšæããŸãããïŒ
@blagerweij説æã«ã€ããŠã¯ãå ¬åŒã®Dockerã€ã¡ãŒãžãã以äžã®ã€ã¡ãŒãžãåç §ããŠãã ããã
äžè¬çãªäœ¿çšæ³ã¯æ¬¡ã®ãšããã§ãã
docker:dind
ã€ã³ã¹ã¿ã³ã¹ãéå§ããŠããdocker:dind
ã³ã³ããã«ãªã³ã¯ãããŠããå¥ã®docker:stable
ã€ã³ã¹ã¿ã³ã¹ãéå§ããŸãdocker
ã³ãã³ãã®å®è¡ãéå§ããŸããããã«ããããœã±ããæ¥ç¶ãä»ããŠãæåã®docker:dind
ã³ã³ãããŒå
ã§å®è¡ãããŠããdockerããŒã¢ã³ã«ã³ãã³ãããªãã€ã¬ã¯ããããŸãããããã£ãŠã docker:dind
ã€ã³ã¹ã¿ã³ã¹ãæçµçã«Dockerã³ãã³ããå®è¡ããã®ã¯äºå®ã§ãããCLIããã³ããšã³ãã¯å®éã«ã¯docker:stable
ã€ã³ã¹ã¿ã³ã¹ã«ååšããŸãã ãããŠãããã¯1ã€ãAWSã«ãã°ã€ã³ããå¿
èŠãããå Žæã§ã;-)
å°ãªããšãããã¯ç§ãç¥ã£ãŠãã䜿çšãã¿ãŒã³ã§ãïŒã€ãŸãã Gitlab CIã䜿çšããŠdocker:dind
䜿çšã·ããªãªããããŸããïŒ
https://hub.docker.com/r/frolvlad/alpine-glibc/ã®glibcã§é«å±±ã®ç»åã䜿çšã§ããŸã
ãããŠãawsããã¥ã¡ã³ãã®æé ã«åŸã£ãŠawscliãã€ã³ã¹ããŒã«ããŸãã ç§ã®ããã«åããã
@blagerweijDockerã€ã¡ãŒãžã®dockerã§ã¹ã¯ãªããã䜿çšããŸããã awscliã¯æ£åžžã«æ©èœããŸãã ãã«ãã§ãšã©ãŒãçºçããŸããïŒ
/usr/glibc-compat/sbin/ldconfig: /usr/glibc-compat/lib/ld-linux-x86-64.so.2 is not a symbolic link
@amiramã¯ãããã®ã¡ãã»ãŒãžãåãåããŸããããã¯ãåã«ç¡èŠã§ããèŠåã§ããã·ã³ããªãã¯ãªã³ã¯ãå¿ èŠã§ãããååšãããã¡ã€ã«ã¯éåžžã®ãã¡ã€ã«ã§ãã https://github.com/envoyproxy/envoy/issues/9078#issuecomment-576837432ãåç §ããŠ
誰ãããã®åé¡ã®ååããalpine / muslã®ãã€ããªãé åžãããã®ãããªååã«å€æŽã§ããŸããïŒ
@joguSD @ jordanst3wart
ããããalpine / musllibcã®ãã€ããªãé åžãããã«æºè¶³ããŠããŸãã åé¡ãããã°æããŠãã ãã
ããã·ã§ã³ãããžã§ã¯ãã«ã¯awss3 cpã®ã¿ãå¿ èŠãªã®ã§ãpipã䜿çšããŠawscliV1ãã€ã³ã¹ããŒã«ããŸããã
FROM alpine:3.12
RUN pip install awscli
RUN aws s3 ..
Adaptopenjdkã€ã¡ãŒãžãæ©èœããçç±ã¯ãæ¬ èœããŠããglibcã©ã€ãã©ãªãå«ãŸããŠããããã§ãã Alphine linuxã¯ãæ¬æ Œçãªglibcã®è»œéãªä»£æ¿æ段ã§ãããmuslglibcãã«åºã¥ããŠããŸãã aws cli v2ãã€ããªã¯muslã§ã¯æ©èœããŸãããæ©èœããã«ã¯ãããã«ããã€ãã®ã©ã€ãã©ãªãå¿ èŠã§ãã
Javaã€ã¡ãŒãžã䜿çšãã代ããã«ãAlpineLinuxã§AWSCLIv2ãå®è¡ããæ¹æ³ã®äŸãšããŠä»¥äžã®Dockerfileã䜿çšããããšãã§ããŸãã
ãã¡ããã¡ãããšåã
äžèšã§ã¯ãglibcã©ã€ãã©ãªãããŠã³ããŒãããAWS CLI v2ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ãããªãŒãã³ã³ããªãŒããªã©ãããããäžèŠãªãã®ãããã€ãåé€ããŸãã çµæã®ç»åã®ãµã€ãºã¯çŽ100MBã§ã
glibcããŒãžã§ã³ãããŒãã³ãŒãã£ã³ã°ããããªãå Žåããã®èª¿æŽã«ããææ°ããŒãžã§ã³ãèªåçã«ãã§ãããããŸãã
FROM alpine
# install glibc compatibility for alpine
RUN apk --no-cache add \
binutils \
curl \
&& GLIBC_VER=$(curl -s https://api.github.com/repos/sgerrand/alpine-pkg-glibc/releases/latest | grep tag_name | cut -d : -f 2,3 | tr -d \",' ') \
&& curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk \
&& curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk \
&& apk add --no-cache \
glibc-${GLIBC_VER}.apk \
glibc-bin-${GLIBC_VER}.apk \
&& curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
&& unzip awscliv2.zip \
&& aws/install \
&& rm -rf \
awscliv2.zip \
aws \
/usr/local/aws-cli/v2/*/dist/aws_completer \
/usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
/usr/local/aws-cli/v2/*/dist/awscli/examples \
&& apk --no-cache del \
binutils \
curl \
&& rm glibc-${GLIBC_VER}.apk \
&& rm glibc-bin-${GLIBC_VER}.apk \
&& rm -rf /var/cache/apk/*
AlpineLinuxã§AWSCLI v2ãå®è¡ããæ¹æ³ã®äŸãšããŠã以äžã®Dockerfileã䜿çšããããšãã§ããŸãã
æäŸãããDockerfile / scriptã¯æ©èœããŸããããã®ãšã©ãŒã衚瀺ãããŸããããã«ãããæ©èœã劚ããããããšã¯ãªãããã§ãã
aws/install: line 78: /aws/dist/aws: not found
äžæè°ãªããšã«ã apk add mandoc
çŽåã«aws/install
ãå®è¡ãããšããã®ãšã©ãŒã衚瀺ãããªããªããã€ã³ã¹ããŒã«åŸã«ãã®ããã±ãŒãžãåé€ããŠãæªåœ±é¿ã¯ãããŸããã ã©ã³ãã ãªä»ã®ããã±ãŒãžã«ã¯ããã®ä¿è·å¹æããªãããã§ãã
äœããæèŠã¯ïŒ
PS apk add less
ã¯ã aws help
ãæ£ããæ©èœããããã«å¿
èŠã§ãïŒããã§ãªãå Žåã¯ãããã±ãŒãžgroff
ãªãããšã«ã€ããŠæå¥ãèšããŸãïŒã
æãåèã«ãªãã³ã¡ã³ã
Adaptopenjdkã€ã¡ãŒãžãæ©èœããçç±ã¯ãæ¬ èœããŠããglibcã©ã€ãã©ãªãå«ãŸããŠããããã§ãã Alphine linuxã¯ãæ¬æ Œçãªglibcã®è»œéãªä»£æ¿æ段ã§ãããmuslglibcãã«åºã¥ããŠããŸãã aws cli v2ãã€ããªã¯muslã§ã¯æ©èœããŸãããæ©èœããã«ã¯ãããã«ããã€ãã®ã©ã€ãã©ãªãå¿ èŠã§ãã
Javaã€ã¡ãŒãžã䜿çšãã代ããã«ãAlpineLinuxã§AWSCLIv2ãå®è¡ããæ¹æ³ã®äŸãšããŠä»¥äžã®Dockerfileã䜿çšããããšãã§ããŸãã
äžèšã§ã¯ãglibcã©ã€ãã©ãªãããŠã³ããŒãããAWS CLI v2ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ãããªãŒãã³ã³ããªãŒããªã©ãããããäžèŠãªãã®ãããã€ãåé€ããŸãã çµæã®ç»åã®ãµã€ãºã¯çŽ100MBã§ã