如何添加dynamic文件到docker集装箱

每当我运行一个docker容器,我想发送dynamic文件名作为一些环境variables。

这在容器中是可以访问的,所以它在我们“回声”时打印它的价值。

但是ADD命令不会添加该文件。

Dockerfile:

ADD $filename ./ echo ls # Not showing file 

docker运行-e filename ='/ path / to / file.extension'

尝试使用音量,而不是:

 $ echo "hello world" > somefile.txt $ docker run -it --rm -v $PWD/somefile.txt:/data/somefile.txt alpine cat /data/somefile.txt hello world 

Dockerfile列出了运行“docker build”时发生的操作。 在运行时不可能传递一个环境variables,因为在那个时候,图像已经被创build了:-)

添加到马克的答案。

如果你想使用docker-compose.yml文件(如果你计划反复运行容器,这是个好主意)。

 mysql: image: mysql volumes: - /someLocalFolder/lib/mysql/:/var/lib/mysql 

你可以用这种方式添加任意数量的卷,包括个人文件,这些文件可以方便地用于configuration等。

ADD在编译(生成)时运行。 当你运行docker exec -e ,这是在容器被build立之后。

你不能添加dynamic文件,因为它被编译。 之前有关卷的命令是正确的,因为您可以在exec期间临时提供这些文件,并让应用程序exec它们。