我有一大堆测试文件(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
答案 0 :(得分:0)
如果它实际上仅用于测试,并且位于testdata
之类的明确命名的隔离目录中,则可以使用bind mount注入它。
删除ARG DEBUG
和构建时选项,以将内容复制到图像中。运行容器时,请使用
docker run \
-v $PWD/local/folder:/app/testdata:ro \
...
这会使主机文件夹以只读方式显示在该容器目录中,因此您不会意外覆盖测试数据以备以后运行。
请注意,这将隐藏该路径之前图像中的所有内容;因此,免责声明为“如果位于单独的目录中,则...”。