我是docker的新手,可以从在线资源中学习。基本上我有一个angularjs项目,该项目在文件夹(src / assets / conf / appConfig.json)中包含一个conf文件,基本上我想要实现的是当我运行我的docker(version-19.03.8)命令
fileappConfig.json应该从/var/lib/docker/volumes/volumetest/_data/appConfig.json
复制到
src/assets/conf/appConfig.json
。
我创建了一个音量(volumetest),如下所示:
我有两个问题:
我需要什么命令才能在/ var / lib / docker / volumes / volumetest / _data路径中创建文件appConfig.json并在文件中添加以下行:
{ baseUrl:http:// localhost:8080 / }
一旦创建了上面的代码,我将在我的Dockerfile中为angularjs项目添加以下行:
COPY src/assets/conf/appConfig.json /var/lib/docker/volumes/volumetest/_data
当我执行docker run命令(docker run -p 8000:8080 -d --name cm testApp:1.0)时,是否会覆盖文件src / assets / conf / appConfig.json?
在此先感谢您的帮助
答案 0 :(得分:0)
您应该完全忽略/var/lib/docker
树。相反,您可以在启动时使用Docker bind mount替换文件。在主机上创建文件;假设您在当前目录中创建了备用appConfig.json
。运行容器时,将该文件安装在以下位置:
docker run \
-v $PWD/appConfig.json:/app/src/assets/conf/appConfig.json \
... \
testApp:1.0
/var/lib/docker
的内容是特定于安装的,不能直接进行编辑。另外,由于容器和图像具有隔离的文件系统空间,因此无法直接写入Dockerfile
中的主机目录。如果您使用命名卷,则只能在容器内部编辑文件,并且必须用卷内容替换整个conf
目录。