0

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

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

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

cp local/folder app/testdata

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

这是我的码头文件:

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
4

1 回答 1

0

如果它真的只是为了测试,并且它在一个明确命名的隔离目录testdata中,你可以使用绑定挂载注入它。

删除ARG DEBUG和 build-time 选项以将内容复制到图像中。当你运行容器时,运行它

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

这使得该主机文件夹出现在该容器目录中,只读,因此您不会意外覆盖测试数据以供以后运行。

请注意,这会隐藏该路径上图像中的任何内容;因此“如果它在一个单独的目录中,那么......”免责声明。

于 2020-07-25T00:03:58.777 回答