我有以下docker撰写。yml公司
version: '2'
services:
web:
image: user-service-web:${WEB_IMAGE_VER}
depends_on:
- db
environment:
NODE_ENV: ${NODE_ENV}
networks:
user-service:
aliases:
- user-service-web
ports:
- "80:3000"
restart: always
db:
image: user-service-mongodb:latest
networks:
viewster-user-service:
aliases:
- user-service-mongodb
ports:
- "27017:27017"
restart: always
volumes:
- mongodb:/data/
networks:
user-service:
driver: bridge
volumes:
mongodb:
当我运行docker compose up时,它会创建指定的卷mongodb,并启动所有需要的容器。但让我困惑的是,卷文件夹有两个空文件夹:configdb和
db,但里面没有数据文件。当我删除db容器时,预期会导致数据丢失。
我尝试连接到db容器并在文件夹和db文件夹中手动创建文件,只有在文件夹中创建的文件出现在主机卷文件夹中。docker似乎只能在“卷设置”中指定的文件夹中创建文件或文件夹,但无法在子文件夹中创建文件。我可能错了。要为每个需要持久化的文件夹创建卷是很困难的。有没有办法为我的案例正确配置卷?
环境:描述:Ubuntu 14.04.3 LTS版本:14.04代码名:trusty
Docker版本:客户端:版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git提交:b9f10c9构建:Wed Jun 1 21:47:50 2016 OS/Arch:linux/amd64
服务器:版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git提交:b9f10c9构建:Wed Jun 1 21:47:50 2016 OS/Arch:linux/amd64
Docker Compose version docker-compose version 1.7.1, build 0a9ab35 docker-py version: 1.8.1 CPython version: 2.7.9 OpenSSL version: OpenSSL 1.0.1e 2013年2月11日
您创建的mongoDB是一个命名卷,而不是主机卷,因此它与主机文件没有连接。命名卷将位于docker内部目录中。当将空卷与容器一起使用时,它将在该位置接收映像卷内容的副本。如果您运行docker-compose down-v
,它也将被删除。
如果您想要一个主机卷,您需要在db服务下切换到此行:
volumes:
- ./data:/data
这将在文件夹内使用/创建一个数据文件夹,在该文件夹中运行docker compose up命令,该命令是装载在容器中/数据的主机卷。
更新:
作为命名卷持久化数据的证据,这里有一个简单的示例:
bash$ cat docker-compose.yml
version: '2'
volumes:
testvol:
driver: local
services:
testapp:
image: busybox
entrypoint: "top"
volumes:
- testvol:/data
bash$ ../bin/docker-compose up -d
Creating network "test_default" with the default driver
Creating volume "test_testvol" with local driver
Creating test_testapp_1
bash$ ../bin/docker-compose exec testapp /bin/sh
/ # find /data
/data
/ # mkdir /data/sub
/ # touch /data/a
/ # touch /data/sub/b
/ # find /data
/data
/data/sub
/data/sub/b
/data/a
/ # exit
bash$ ../bin/docker-compose down
Stopping test_testapp_1 ... done
Removing test_testapp_1 ... done
Removing network test_default
bash$ ../bin/docker-compose up -d
Creating network "test_default" with the default driver
Creating test_testapp_1
bash$ ../bin/docker-compose exec testapp /bin/sh
/ # find /data
/data
/data/sub
/data/sub/b
/data/a
/ # exit
问题内容: 当我涉及此示例撰写文件时,我正在设置一些培训材料: https://github.com/dockersamples/example-voting-app/blob/master/docker- compose.yml 而且我找不到文件的第48和49行上如何安装该卷: 有人可以向我解释主机上的该卷在哪里吗?找不到它,我不希望在容器消失后保持任何postgresql数据悬挂。网络发生了类
问题内容: 我需要将文件写入以下路径: 但是路径可能不存在。所以我得到以下错误: message = ENOENT,打开/folder1/folder2/file.txt 如何将内容写入该路径? 问题答案: 将mkdirp与first 结合使用。 如果整个路径已经存在,则为noop。否则,它将为您创建所有丢失的目录。 该模块可满足您的需求:https : //npmjs.org/package/w
我的应用程序将一些文件保存到设备上的数据/数据文件夹中。保存远程文件后,我会处理这些文件,并将它们复制到其他文件夹中。在之前测试过的所有设备上,All都能正常工作,但在galaxy s3上会生成空指针异常。似乎我不被允许在那个文件夹上写或处理文件!但只有新的星系s3!我也无法使用EclipseDDMS文件浏览器在数据文件夹中找到任何文件,而在模拟器(相同的android版本)中,我可以正确查看所有
问题内容: 我将创建一个或多或少具有以下形式的结构: 我想将这些值写入文件并在后续调用中读取它们。我最初的计划是将它们读入映射并使用键(路径)查找值(哈希和LastModified)。Go中有一种巧妙的方法吗? 如果没有,您可以推荐哪种文件格式?我已经阅读并尝试了先前项目中的一些键/值文件存储,但并未使用Go进行试验。现在,我的要求可能非常简单,因此大型数据库服务器系统会显得过大。我只想要我可以快
在Apache Camel上工作时,每当使用camel-zip压缩文件或通过canel-ftp复制文件时,Camel会将文件移动到.Camel文件夹中,并在处理后不将其保留在源文件夹中。我希望我的文件在处理完成后留在源文件夹中。请建议如何实现相同的。 CamelContext context=new DefaultCamelContext();context.addRoutes(new Route
我有个问题。 有一个自定义mvc结构,当它是根文件夹时,一切都通过.htaccess中的RewriteRule工作,但如果我将它设置为子文件夹,它将停止工作。 .htaccess是 重写引擎在 重写条件%{REQUEST_FILENAME}-重写cond%{REQUEST_FILENAME}-d RewriteRule^(.*)$index.php?route=$1[L,QSA] AddDefau