Dockerfile의 ADD는 url을 복사 원본으로 지정하면 자동 압축을 풀지 않습니다.

4294 단어 dockerfile도커
03/26 추가

원래 ADD 자체 사용하는 것이 별로 추천할 수 없다.
액세스 처의 콘텐츠가 멱등이라면wget gzip tar 로 충분하다고 하는 것이 강한 사람의 생각 같은 것입니다.
better docker image - Speaker Deck
RUN wget 로 하는 것으로 cache가 효과가 있다

과연.

소개



ADD로 remote url을 지정해 tgz 떨어뜨려, 그대로 전개해 줄게 네라고 생각하고 있으면 주지 않았으므로 울면서 RUN를 썼다.

마지막 것은 이것

Dockerfile
RUN mkdir example \
    && curl -sL http://example.com/release/1.0/example-bin-1.0.tgz \
    | tar zx -C example  --strip-components 1

rm 등은 사용하지 않지만 그다지 아름답지 않다. . .

ADD | Dockerfile



Dockerfile을 배우면서 쓰고 있으면 ADD라는 것을 알았다

The ADD instruction copies new files, directories or remote file URLs from and adds them to the filesystem of the image at the path .
ADD | Docker Documentation

간단히 말하면 指定したファイルやディレクトリをコンテナ内に追加する 지침.
같은 것에 COPY 라고 하는 것이 있다.

ADD와 COPY의 차이



흠뻑.
더 깊이 알고 싶다면 여기
[docker] COPY와 ADD의 차이점을 시도했습니다. - Qiita

COPY



Dockerfile
COPY
  • 지정한 파일이나 폴더 복사
  • url은 카피원으로 지정할 수 없는 요!
  • 압축되어도 그대로!

  • ADD



    Dockerfile
    ADD
    
  • 지정한 파일이나 폴더 복사
  • remote의 파일(url)도 카피원으로 지정할 수 있다!
  • 복사 원의 파일이 압축되고 있으면 컨테이너내에 자동 해동해 배치!

  • 거친 차이는 이런 느낌.ADD 에서 remote의 압축된 파일을 지정하면 그대로 압축을 풀고 컨테이너 내에 설치할 수 있을 것!
    그것이 가능하면 wget && tar && rm 라든지 넌센스인 RUN 를 하지 않아서 미안해!

    -> 할 수 없었습니다.

    에러가 발생해 Twitter로 슬퍼하고 있으면 친구로부터 공식 레퍼런스를 던질 수 있다.

    Resources from remote URLs are not decompressed.
    요약 : remote url을 지정하면 자동 압축 풀기가 없습니다.

    Dockerfile 참조 | Docker Documentation

    카시미

    최종 형태


    RUN curl -sL http://example.com/release/1.0/example-bin-1.0.tgz \
        | tar zx -C ./
    
    # la
    example-bin-1.0/
    
    # tree example-bin-1.0
    example-bin-1.0
    ├── bin
    │   ├── example
    │   ├── sample
    │   └── answer
    ・
    ・
    

    curl한 것을 tar에 파이프로 건네주는 것으로 조금은 마시한 Dockerfile이 되었다.
    단지 이것이라고 하면 example-bin-1.0
    RUN mkdir example \
        && curl -sL http://example.com/release/1.0/example-bin-1.0.tgz \
        | tar zx -C example  --strip-components 1
    

    tar의 옵션으로 케어해 준다.
    이제 mv example-bin-1.0 example 한 것 같은 상태.
    # la
    example/
    
    # tree example
    example
    ├── bin
    │   ├── example
    │   ├── sample
    │   └── answer
    ・
    ・
    

    /tmp라든지 떨어뜨려, 해동해, 리네임 해,/tmp에 보존한 녀석 삭제…

    여담



    remote의 압축 파일을 ADD 하면(자) 전개되어 버리는 버젼이 있었던 것 같아서,
    참조와 거동이 다르면 이슈가 서 있었다.
    Behaviour of ADD for remote tar balls changed with 17.06 · Issue #33849 · moby/moby


    그래.

    좋은 웹페이지 즐겨찾기