我有以下docker-compose:
version: '3.7'
services:
db:
image: bitnami/mongodb:5.0.6
volumes:
- "/app/local-data:/data/db"
env_file: ./db/.env
问题是数据在docker-compose up/down和docker似乎不使用/app/local-data
之间不存在,即使它创建了它。
当我运行docker-compose
时,容器启动并自然工作。目录/app/local-data
由docker创建。,但是Mongodb不填充它,并且没有r/w错误显示在控制台上。这让我觉得一个临时卷被分配给了容器。但如果这是真的,那么为什么docker仍然创建/app/local-data
而不使用它?
有什么想法我可以调试这个吗?
像volumes:
这样的Docker指令不知道图像中实际运行的是什么。如果需要,该指令会创建指定的主机和容器路径,并将主机路径绑定到容器路径中。这取决于应用程序代码是否使用该目录。
如果您查看bitnami/mongodb
Docker Hub页面中的"持久化您的数据库",数据库被配置为将数据存储在容器内的/bitnami/mongodb
目录中,该目录需要是第二个volumes:
路径。还要注意,数据目录需要由用户ID 1001可写,这个用户ID 1001在您的主机上可能存在,也可能不存在(没有创建它的特定要求)。
volumes:
- "/app/local-data:/bitnami/mongodb"
# ^^^^^^^^^^^^^^^^
sudo chown -R 1001 /app/local-data
sudo docker-compose up -d