Docker: syn c файлы, созданные dockerfile с хостом через том - PullRequest
0 голосов
/ 28 января 2020

Когда я использую docker -compose с томами для синхронизации c моих файлов с хоста в контейнер, я не вижу никаких новых файлов, созданных в dockerfile

my docker -compose.yml:

version: "3"

services:
  web:
    image: nginx:latest
    volumes:
        - ./:/code
    links:
        - php

  php:
    build: .
    volumes:
      - ./:/code

Мой dockerfile выглядит следующим образом:

FROM php:7-fpm

WORKDIR /code

RUN touch testfile

Конечно, это упрощенный пример, но почему я не вижу «testfile» в моей хост-системе? если я использую docker-compose exec php touch testfile, все работает как положено, я вижу тестовый файл на моем хосте. Насколько я понимаю, мне нужно видеть его вне моего контейнера, чтобы его можно было использовать совместно с другими контейнерами того же объема (в этом примере nginx)

1 Ответ

1 голос
/ 28 января 2020

Когда вы запускаете RUN touch testfile в вашем Dockerfile, оно создает testfile в самом изображении.

Теперь, когда вы запускаете контейнер и том, монтируете каталог ./ в /code, он будет монтироваться поверх существующей папки /code в образе, поэтому вы видите его пустым. Если вы не добавили монтирование тома в свой файл компоновки, там будет testfile.

Примечание. Я не совсем понимаю ваш вариант использования, но если вы хотите, чтобы ваше изображение создавало его файл внутри тома монтирования, вам нужно будет добавить его в вашу точку входа.

...