所以我只需要一件简单的事情,就是将一个脚本(其相对路径(来自工作目录)是 influxdb / init.iql (InfluxDB
初始化脚本)复制到该路径中 /docker-entrypoint-initdb.d / ,这是一种根据InfluxDB
Docker映像doc初始化InfluxDB
数据库的方法:
初始化文件 如果Docker映像在/docker-entrypoint-initdb.d文件夹中找到任何扩展名为.sh或.iql的文件,它将执行这些文件
现在,我的 docker-compose.yml 是:
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来完成此任务。
谢谢。
答案 0 :(得分:1)
docker-compose文件告诉您如何运行映像,而不是如何构建映像。这两个是完全独立的概念。我也不知道你想做什么。如果需要使用数据初始化容器,只需将脚本(或iql文件)安装到docker-compose文件卷内的/docker-entrypoint-initdb.d
位置,例如:
volumes:
- influxdb-data:/var/lib/influxdb
- project_import.sh:/docker-entrypoint-initdb.d/import.sh:ro
脚本(或iql文件)将在容器启动时执行,而不是在构建映像时执行。如果您不相信我,请查看图片的the entrypoint script,以了解此过程的工作原理。
请记住,这些脚本将在每次容器启动时执行。