Как скопировать содержимое папки в существующую папку в dockerfile

avatar
Saúl Núñez
8 августа 2021 в 19:47
76
1
-2

Я пытаюсь настроить образ Docker для сайта, который я создаю из CI. У меня проблема в том, что я хочу скопировать только файлы из папки в htdocs в образе. Я хочу получить такую ​​структуру:

  • хтдокс
    • index.html
    • js
    • bkg.png
    • Сборка

Напротив, я получаю копию своей папки внутри htdocs

root@f0e2001f3a3d:/usr/local/apache2# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  modules
root@f0e2001f3a3d:/usr/local/apache2# cd htdocs
root@f0e2001f3a3d:/usr/local/apache2/htdocs# ls
WebGL  index.html
root@f0e2001f3a3d:/usr/local/apache2/htdocs# cd WebGL
root@f0e2001f3a3d:/usr/local/apache2/htdocs/WebGL# ls
Build  bkg.png  css  index.html  js

Мой файл докеров:

FROM httpd:2.4

COPY build/WebGL /usr/local/apache2/htdocs
EXPOSE 80
Источник

Ответы (1)

avatar
TheQueenIsDead
9 августа 2021 в 00:03
0

Вы можете копировать файлы, а не каталог, указав / в конце директивы COPY. Например:

Исходный каталог

$ ls -R
.:
Dockerfile  htdocs

./htdocs:
bkg.png  Build  index.html  js


$ cat Dockerfile
FROM alpine

COPY htdocs/ /tmp/files/

RUN ls -laR /tmp/files

Здание

$ docker build . --no-cache
Sending build context to Docker daemon  4.608kB
Step 1/3 : FROM alpine
 ---> d4ff818577bc
Step 2/3 : COPY htdocs/ /tmp/files/
 ---> d777a2fbcbb9
Step 3/3 : RUN ls -laR /tmp/files
 ---> Running in fbe75f1353aa
/tmp/files:
total 8
drwxr-xr-x    2 root     root          4096 Aug  8 23:59 .
drwxrwxrwt    1 root     root          4096 Aug  8 23:59 ..
-rw-rw-r--    1 root     root             0 Aug  8 23:12 Build
-rw-rw-r--    1 root     root             0 Aug  8 23:12 bkg.png
-rw-rw-r--    1 root     root             0 Aug  8 23:12 index.html
-rw-rw-r--    1 root     root             0 Aug  8 23:12 js
Removing intermediate container fbe75f1353aa
 ---> 5c2225edb987
Successfully built 5c2225edb987