code

Dockerfile 다운로드 및 압축 해제 방법

starcafe 2023. 2. 18. 20:37
반응형

Dockerfile 다운로드 및 압축 해제 방법

동작하고 있습니다만, 파일을 곧바로 다운로드해 언팩 하는 방법을 변경하고 싶습니다.

Dockerfile
FROM wordpress:fpm

# Copying themes from local  
COPY  ./wordpress/ /var/www/html/wp-content/themes/wordpress/    
RUN chmod -R 777 /var/www/html/    

사이트에서 파일을 즉시 다운로드하여 적절한 폴더에 압축을 풀려면 어떻게 해야 합니까?

docker-compose.yml
wordpress:
build: . 
links:
  - db:mysql
nginx:
image: raulr/nginx-wordpress 
links:
  - wordpress
ports:
 - "8080:80"
 volumes_from:
 - wordpress
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: qwerty 

나는 시도했다.

#install unzip and wget
RUN \
apt-get update && \
apt-get install unzip wget -y && \
rm -rf /var/lib/apt/lists/*

RUN wget -O /var/www/html/type.zip http://wp-templates.ru/download/2405 \
&& unzip '/var/www/html/type.zip' -d /var/www/html/wp-content/themes/ && rm 
/var/www/html/type.zip || true;

Dockerfile에는 복사 및 추출을 위한 "네이티브 명령어"가 있습니다..tar.gz파일을 표시합니다.

따라서 아카이브 유형을 .zip에서 .tar.gz로 변경하여 사용할 수 있습니다(아마도 향후 버전에서는 zip도 지원될 것입니다만, 잘 모르겠습니다).ADD대신COPY.

자세한 것은 이쪽ADD

다단계 도커 빌드를 사용하는 것이 가장 좋습니다.도커와 빌드킷의 최신 버전이 유효하게 되어 있어야 합니다.그럼 이 선에 따라 뭔가를 하세요.

# syntax=docker/dockerfile:1
from alpine:latest as unzipper
apk add unzip wget curl
RUN mkdir /opt/ ; \
  curl <some-url> | tar xvzf - -C /opt

FROM wordpress:fpm
COPY  --from unzipper /opt/ /var/www/html/wp-content/themes/wordpress/    

더 좋은 것은 도커 이미지가 이미 작성되어 있는 경우, 필요한 것은 'copy --from' 행과 이미지 이름을 붙이기만 하면 된다는 것입니다.

마지막으로 빌드 완료 시 폐기되는 첫 번째 스테이지의 혼란에 대해 걱정하지 마십시오.따라서 알파인이나 캐시 미사용은 무관하며 설치된 패키지는 모두 최종 이미지에 표시되지 않습니다.

Docker 설명서에서 원격 압축 파일에 대한 추가 지침을 찾았습니다.

이미지 사이즈는 중요하므로 ADD를 사용하여 리모트 URL에서 패키지를 가져오는 것은 권장하지 않습니다.대신 curl 또는 wget을 사용해야 합니다.이렇게 하면 파일이 압축 해제된 후 더 이상 필요하지 않은 파일을 삭제할 수 있으며 이미지에 다른 레이어를 추가할 필요가 없습니다.예를 들어 다음과 같은 작업은 피해야 합니다.

ADD https://example.com/big.tar.xz /usr/src/things/
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
RUN make -C /usr/src/things all

대신 다음과 같은 작업을 수행합니다.

RUN mkdir -p /usr/src/things \
    && curl -SL https://example.com/big.tar.xz \
    | tar -xJC /usr/src/things \
    && make -C /usr/src/things all

언급URL : https://stackoverflow.com/questions/53840831/how-to-download-and-unzip-in-dockerfile

반응형