docker는 와일드카드를 사용하여 진입점을 형성합니다. cp: cp: can stat /foo/*.txt

docker는 와일드카드를 사용하여 진입점을 형성합니다. cp: cp: can stat /foo/*.txt

docker-compose.yml 파일에는 호스트 시스템에서 파일을 검색할 수 있도록 파일을 바인드 마운트에 복사해야 하는 진입점이 있습니다.

version: '3.9'

services:
  my-service:
  ....
  entrypoint: cp /foo/*.txt /data
  volumes:
    - ./data:/data

하지만 이 컨테이너를 실행할 때마다 로그에는 다음이 표시됩니다 cp: cannot stat '/foo/*.txt': No such file or directory. 반면에 전체 파일 이름을 입력하면 제대로 작동합니다.

나도 시도했지만 entrypoint: ['cp', '/foo/*.txt', '/data']같은 오류가 발생했습니다.

인용하다:https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact

와일드카드를 사용하여 Compose 서비스에서 파일을 복사하는 방법은 무엇입니까?

정보:

docker --version
Docker version 20.10.21, build baeda1f

cat /etc/lsb-release | grep DESCRIPTION
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"

답변1

이와 같은 문자는 *셸에서 해석되므로 이를 처리하려면 셸을 호출해야 합니다(예: sh -c 'cp /foo/*.txt /data'). 그렇지 않으면 이러한 인수가 에 전달되어 exec이를 어떻게 처리할지 알 수 없으며 *설명하는 오류가 발생합니다.

관련 정보