每当我运行一个docker容器时,我想将动态文件名作为一些环境变量发送。
可在容器中访问,因此当我们回复时,它会打印它的价值。
但是ADD命令没有添加该文件。
Dockerfile:
ADD $filename ./
echo ls # Not showing file
docker run -e filename =' /path/to/file.extension'
答案 0 :(得分:2)
尝试改为使用volume:
$ 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"时发生的操作。在运行时无法传入环境变量,因为此时图像已经构建: - )
答案 1 :(得分:1)
ADD
在编译(构建)期间运行。当您运行容器构建之后的docker exec -e
时。
您无法添加动态文件,因为它已经过编译。关于卷的上一个命令是正确的,因为您可以在exec
期间临时提供这些文件并让您的应用程序选择它们。
答案 2 :(得分:1)
添加到Mark的答案。
如果你想使用docker-compose.yml文件(如果你打算一遍又一遍地运行容器,那就好了。)
mysql:
image: mysql
volumes:
- /someLocalFolder/lib/mysql/:/var/lib/mysql
您可以通过这种方式添加任意数量的卷,包括可以方便配置的单个文件等。