如何将动态文件添加到docker容器中

时间:2016-10-02 21:18:33

标签: docker

每当我运行一个docker容器时,我想将动态文件名作为一些环境变量发送。

可在容器中访问,因此当我们回复时,它会打印它的价值。

但是ADD命令没有添加该文件。

Dockerfile:

ADD $filename ./
echo ls # Not showing file

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

3 个答案:

答案 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

您可以通过这种方式添加任意数量的卷,包括可以方便配置的单个文件等。