Dockerfile - Сенсорный файл по пути к контейнеру - PullRequest
0 голосов
/ 29 мая 2018

docker-compose.yml file:

web:
  build: ./code
  ports:
    - "80:80"
  volumes:
    - ./mount:/var/www/html

dockerfile in ./code:

FROM wordpress
WORKDIR /var/www/html
RUN touch test.txt

Thisявляется производственной средой, которую я использую для настройки простого блога WordPress (для простоты опущены другие службы в docker-compose.yml & Dockerfile).

Вот что я делаю:

  • Привязка каталога узла монтирования в месте назначения контейнера /var/www/html
  • Создание файла test.txt во время сборки

Что НЕ работает:

  • Когда я проверяю /www/var/html на контейнере, я не нахожу свой test.txt файл

Что я DO понимаю:

  • Монтирование привязки происходит во время выполнения
  • В этом конкретном случае файл создается, но когда вы монтируетекаталог узла, команды в Dockerfile переопределяются
  • Когда вы используете монтирование тома, оно работает

Что я НЕ понимаю:

  • Каким образом вы можете поместить свой последний код в контейнер, который использует привязку для сохранения данных?
  • Как создать сценарий, который позволит мне достичь этого во время выполнения?
  • Как еще можно этого добиться, учитывая, что Я ДОЛЖЕН использовать монтирование привязки (AWS ECS сохраняет данные только при использовании директории хостапуть для тома)

1 Ответ

0 голосов
/ 29 мая 2018

Ваши данные будут сохранены во время выполнения.Все, что хранится в /var/www/html во время выполнения, будет сохранено в каталоге хоста ./mount.

Во время сборки все происходит на уровне докера внутри образа контейнера.

Если вы хотите сделатьпрежде чем создавать что-либо, вы можете ADD создать его для своего изображения и использовать CMD или ENTRYPOINT для запуска сценария при запуске контейнера.

В итоге

  • Каким образом вы можете получить свой последний код в контейнер, который использует привязку для сохранения данных?

Вы добавляете свой последний код в изображение (например, git clone, COPY,ДОБАВИТЬ, или что вас устраивает).Контейнер не должен быть изменяемым, поэтому вы сохраняете свой код версионным и определяете постоянную папку (например, для загрузки)

  • Как создать сценарий, который позволит мне достичь этого во время выполнения?

Если вы хотите сделать это во время выполнения, вы добавляете свой сценарий оболочки в образ, а затем запускаете его.Хотя это не лучший подход для этого варианта использования.

  • Как еще можно добиться этого, учитывая, что Я ДОЛЖЕН использовать монтирование связывания (AWS ECS сохраняет данные только при использовании пути к каталогу хоста длятом)

ИМХО, вы должны использовать ваши изображения в качестве сборки вашего кода.Ваше изображение не должно быть изменчивым и должно отражать экземпляр в жизненном цикле вашего кода.Определите пути с данными, и эти пути будут вашими монтируемыми на уровне хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...