【发布时间】:2020-03-30 09:25:41
【问题描述】:
我有一个像这样的 docker-compose 文件:
version: "3.4"
services:
mongo:
image: mongo
restart: always
container_name: us_mongodb
environment:
...
volumes:
- ./mongo-dev-volume:/data/db
mongo-express:
...
example-app:
build:
context: ../../
dockerfile: "./example-app/Dockerfile"
args:
- PORT=4200
container_name: us_example-app_builder_and_server
ports:
- 4200:4200
volumes:
mongo-dev-volume:
(示例应用程序 dockerfile 只是一个简单的静态文件服务器,它将文件复制到自身。)
如果我运行 docker-compose up 一切都很好。
我想重建上述示例应用程序,所以我运行这个命令:
docker-compose up -d --force-recreate --no-deps --build example-app
为此,我收到以下错误消息:
forest@forest:~/xxxxxx/xxxxxx/Docker/prod-nginx$ docker-compose up -d --force-recreate --no-deps --build example-app
Building example-app
Traceback (most recent call last):
File "bin/docker-compose", line 6, in <module>
...
[Previous line repeated 1 more time]
File "site-packages/docker/utils/build.py", line 184, in rec_walk
PermissionError: [Errno 13] Permission denied: '/xxxxxx/xxxxxx/Docker/prod-nginx/mongo-dev-volume/journal'
这里有什么问题?
我已经发现/尝试过的事情:
1.) 上述服务与 mongodb 卷没有任何关系。但是如果我删除了所说的 mongo-dev-volume,那么命令可以运行。之后,如果单个docker-compose up 创建了上述文件夹,问题仍然出现。但这不是在每次重启时删除数据库的解决方案......
2.) 我仍然可以毫无问题地执行docker-compose down 和docker-compose up(但正如我所说,我需要重建上述示例应用程序...)
3.) 我尝试添加一个 .dockerignore,就像在其他一些线程中看到的那样:
#.dockerignore
**/mongo-dev-volume
但它似乎没有任何效果。 (就在 docker-compose.yml 旁边)
4.) 我怀疑某些内容与权限有关。但是我不创建卷(只绑定名称),docker创建它:
forest@forest:~/xxxxxx/xxxxxx/Docker/prod-nginx$ ls -lsh
total 32K
4,0K -rw-rw-r-- 1 forest forest 3,8K dec 5 10:31 docker-compose.yml
4,0K drwxrwxr-x 2 forest forest 4,0K júl 1 12:25 example-app
4,0K drwxrwxr-x 4 999 root 4,0K dec 5 13:12 mongo-dev-volume
【问题讨论】:
标签: mongodb docker permissions docker-compose