Смонтируйте файлы в томе только для чтения (где источник находится в .dockerignore) - PullRequest
0 голосов
/ 13 октября 2019

Мое приложение зависит от секретов, которые я храню в папке .credentials (например, .credentials/.env, .credentials/.google_api.json и т. Д.). Я не хочу, чтобы эти файлы были встроены в образ докера, однако они нужныбыть видимым для контейнера Docker.

Мое решение:

  • Добавить .credentials к моему .dockerignore
  • Смонтировать папку учетных данных в режиме только для чтенияс томом:
# docker-compose.yaml
version: '3'
services:
  app:
    build: .
    volumes:
      - ./.credentials:/app/.credentials:ro
  1. Это не работает (я не вижу никаких учетных данных в док-контейнере). Мне интересно, вызывает ли .dockerignore громкость, или я сделал что-то еще не так?

  2. Я поступаю неправильно? Например, я мог бы просто передать файл .env с помощью docker run IMAGE_NAME --env-file .env

Редактировать:

Моя проблема была связана с тем, как я запускал образ. Я делал docker-compose build, а затем docker run IMAGE_NAME, предполагая, что тома были встроены в образ. Однако, похоже, это не так.

Вместо приведенный выше код работает , когда я выполняю docker-compose run app (где app - имя службы) после сборки.

1 Ответ

1 голос
/ 14 октября 2019

Судя по комментариям, проблема заключается в поиске файла docker-compose.yml для определения вашего контейнера при запуске контейнера с docker run. Команда docker run не использует файл compose, поэтому в результирующем контейнере не было определено ни одного тома.

Сам процесс сборки создает образ, в котором вы не указываете источник томов. Только Dockerfile и ваш контекст сборки используются в качестве входных данных для сборки. Все остальные файлы compose являются настройками времени выполнения, которые применяются к контейнерам. Многие проекты даже не используют файл compose для построения изображения, поэтому все параметры в файле compose для этих проектов являются способом определения параметров по умолчанию для создаваемых контейнеров.

Решение заключается в использовании docker-compose up -d проверить свои docker-compose.yml.

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