Скопируйте файл перед сборкой изображения в Docker - PullRequest
0 голосов
/ 17 января 2019

Так что мне просто нужна простая вещь, которая копирует скрипт, относительный путь (из рабочего каталога) которого равен influenxdb / init.iql (InfluxDB скрипт инициализации) в путь /docker-entrypoint-initdb.d/ - способ инициализации базы данных InfluxDB в соответствии с InfluxDB образом Docker doc :

Файлы инициализации, еслиобраз Docker находит любые файлы с расширениями .sh или .iql внутри папки /docker-entrypoint-initdb.d, он будет выполнять их

Прямо сейчас мой docker-compose.yml is:

version: "3.3"

services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "8087:8086"
    volumes:
      - influxdb-data:/var/lib/influxdb

volumes:
  influxdb-data:

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

Как я могу это сделать?Я думал о реализации Makefile, но я бы предпочел использовать Docker для этого, если есть возможность не добавлять ненужные дополнительные части в проект.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 января 2019

Файл docker-compose сообщает, как запустить изображение, а не как его построить. Эти два понятия совершенно разные. Также я не уверен, что ты пытаешься сделать. Если вам нужно инициализировать ваш контейнер с данными, просто смонтируйте скрипт (или файл iql) в папку /docker-entrypoint-initdb.d внутри томов файла docker-compose, например ::

volumes:
  - influxdb-data:/var/lib/influxdb
  - project_import.sh:/docker-entrypoint-initdb.d/import.sh:ro

Скрипт (ы) (или файл (ы) iql) будут выполняться при запуске контейнера, а не при создании образа. Если вы не верите мне, посмотрите сценарий точки входа изображения, чтобы увидеть, как работает этот процесс.

Просто помните, что эти скрипты будут выполняться при каждом запуске контейнера.

...