Sto provando a copiare un singolo file dalla radice del contesto di compilazione in una directory appena creata in un'immagine docker.Come utilizzare le istruzioni COPY/ADD del Docker per copiare un singolo file in un'immagine
Il Dockerfile che sto utilizzando è il seguente:
FROM debian:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY test.txt /usr/src/app
Il file test.txt è un semplice file di testo ASCII come segue:
$ cat test.txt
This is a test
Tuttavia, quando ho costruito questa immagine I ottenere un'immagine affermando che il percorso di destinazione non è una directory.
$ docker build .
Sending build context to Docker daemon 4.608 kB
Sending build context to Docker daemon
Step 0 : FROM debian:latest
---> 9a61b6b1315e
Step 1 : RUN mkdir -p /usr/src/app
---> Using cache
---> 86bd44a8776e
Step 2 : WORKDIR /usr/src/app
---> Using cache
---> ed6771adc681
Step 3 : ADD test.txt /usr/src/app
stat /var/lib/docker/devicemapper/mnt/ee5b9b7029f2adf27d332cbb0d98d6ad9927629a7569fd2d9574cb767b23547b/rootfs/usr/src/app/test.txt: not a directory
Ho provato a utilizzare più combinazioni di versioni di finestra mobile, immagini di base e distribuzioni con finestra mobile installata. Ho anche provato ad usare ADD invece di COPY ma il risultato è lo stesso.
Attualmente sto cercando questo su CentOS 7 con la seguente versione finestra mobile installata:
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64
Quello che ho notato è che posso copiare una directory, ma non è un file. Ad esempio, se creo una directory "test" nella radice contesto costruire e mettere test.txt all'interno della directory di prova allora posso copiare la directory con successo:
FROM debian:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY test /usr/src/app
Si noti che nel precedente Dockerfile copio l'intero ./test directory anziché solo ./test.txt. Questa build con successo.
Il Docker documentation ha il seguente caso d'uso di esempio per l'istruzione COPY che è simile a quello che sto cercando di fare:
COPY hom?.txt /mydir/
Chiunque può segnalare quello che sto facendo male? Come posso fare per copiare un singolo file?
Grazie jwodder, ha funzionato subito. –