根据docker-compose环境变量将文件添加到docker容器

时间:2020-07-24 20:04:46

标签: docker docker-compose dockerfile run-app

我有一大堆测试文件(3.2 gb),如果设置了环境变量(DEBUG),我只想添加到容器中。为了进行本地测试,我将它们设置在docker-compose文件中。

到目前为止,我已经将测试数据文件夹添加到了.dockerignore文件,并尝试了Dockerfile中提到的here解决方案。

我也尝试从我在docker文件中调用的cp中运行run_app.sh命令:

cp local/folder app/testdata

但是得到cp: cannot stat 'local/folder': No such file or directory,我想是因为它试图在容器内的本地计算机上找到一个文件夹吗?

这是我的docker文件:

RUN mkdir /app
WORKDIR /app
ADD . /app/

ARG DEBUG
RUN if [ "x$DEBUG" = "True" ] ; echo "Argument not provided" ; echo "Argument is $arg" ; fi

RUN pip install -r requirements.txt 
USER nobody

ENV PORT 5000
EXPOSE ${PORT}

CMD /uus/run_app.sh

1 个答案:

答案 0 :(得分:0)

如果它实际上仅用于测试,并且位于testdata之类的明确命名的隔离目录中,则可以使用bind mount注入它。

删除ARG DEBUG和构建时选项,以将内容复制到图像中。运行容器时,请使用

docker run \
  -v $PWD/local/folder:/app/testdata:ro \
  ...

这会使主机文件夹以只读方式显示在该容器目录中,因此您不会意外覆盖测试数据以备以后运行。

请注意,这将隐藏该路径之前图像中的所有内容;因此,免责声明为“如果位于单独的目录中,则...”。