Использование контекста:
Цель состоит в том, чтобы скопировать test.txt в контейнер и сделать его видимым в папке tst хоста.Папка tst содержит уже существующий файл tst.txt.
Использование приложения Docker:
Использование .dockerignore:
.DS_Store
.vscode
.dockerignore
Dockerfile
docker-compose.yml
**/tst
Использование файла Docker:
FROM alpine:latest
RUN apk add --no-cache bash
WORKDIR /app
RUN echo "$(echo "pwd:")" "$(pwd)" <<-- returns pwd: /app
COPY test.txt .
RUN ls -la .
CMD ["sh", "-c", "ls -la ."]
Использование файла docker-compose:
version: '3.7'
services:
app:
build: .
volumes:
- ./tst:/app
Запуск docker-compose up
приводит к:
Creating network "sof_default" with the default driver
Building app
Step 1/7 : FROM alpine:latest
latest: Pulling from library/alpine
6c40cc604d8e: Downloading [>
----------
Step 3/7 : WORKDIR /app
---> Running in cf58e5a10d23
Removing intermediate container cf58e5a10d23
---> 76fb51298933
Step 4/7 : RUN echo "$(echo "pwd:")" "$(pwd)"
---> Running in 07135f745883
pwd: /app
Removing intermediate container 07135f745883
---> 45acc1c04a12
Step 5/7 : COPY test.txt .
---> de0ce42397b9
Step 6/7 : RUN ls -la . <<- the output shows test.txt was copied into the container's /app directory
---> Running in 60371e9516c1
total 12
drwxr-xr-x 1 root root 4096 Feb 12 21:25 .
drwxr-xr-x 1 root root 4096 Feb 12 21:25 ..
-rw-r--r-- 1 root root 15 Feb 12 19:19 test.txt
Removing intermediate container 60371e9516c1
---> 3d514dac4f61
Step 7/7 : CMD ["sh", "-c", "ls -la . && cat test.txt"]
---> Running in db644643a844
Removing intermediate container db644643a844
---> ad9f6988d31d
Successfully built ad9f6988d31d
Successfully tagged sof_app:latest
WARNING: Image for service app was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating sof_app_1 ... done
Attaching to sof_app_1
app_1 | total 8
app_1 | drwxr-xr-x 3 root root 96 Feb 12 20:50 .
app_1 | drwxr-xr-x 1 root root 4096 Feb 12 21:25 ..
app_1 | -rw-r--r-- 1 root root 45 Feb 12 20:51 tst.txt
app_1 | cat: can't open 'test.txt': No such file or directory
sof_app_1 exited with code 1
Вывод показывает, что text.txt был скопирован в контейнер, но он не виден на хосте.Почему это так?
https://docs.docker.com/compose/faq/ говорит
"Вы можете сделать так, чтобы изображение включало в себя код, используя КОПИРОВАТЬ, и использовать том в вашем файле Compose для включениякод от хоста во время разработки. Том переопределяет содержимое каталога изображения. "
Последнее предложение означает, что любые файлы или папки на томе хоста переопределяют файлы с тем же именемв отображенном каталоге изображения.Я не ожидал бы, что каталог хоста полностью перезапишет каталог образа, удалив все файлы, уже находящиеся в нем.Я ошибаюсь в этом предположении?
Любое хорошее руководство приветствуется.