我正在debian 9上运行它
我正在使用sudo docker volume create db
创建在docker-compose.yml
中使用的卷。但是我仍然收到错误db_1_d89b59353579 | mkdir: cannot create directory '/var/lib/mysql': Permission denied
。
如何为使用该卷的用户设置权限。以及如何获得用户?
Docker-Compose:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql:z
environment:
- MYSQL_ROOT_PASSWORD=***
- MYSQL_PASSWORD=***
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
restart: always
运行时我得到一个install.sh文件:
...
sudo docker volume create db
sudo docker-compose build
docker-compose up -d
答案 0 :(得分:3)
尝试首先将安装更改为本地文件夹,看看是否可以解决您的问题:
version: '2'
volumes:
nextcloud:
db:
services:
db:
...
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=***
- MYSQL_PASSWORD=***
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
...
volumes:
- ./nextcloud:/var/www/html
restart: always
如果是,则检查docker-compose down
是否已正确删除卷。运行docker volume ls
。如果它们仍然存在,请手动将其删除,然后重新运行包含该卷的容器。
关于安装到卷(db:/ var / lib / mysql)和安装到主机路径(./db:/var/lib/mysql)之间的差异:
>在第一种情况下,它是volume managed by Docker。它是为了持久性而设计的,但是获取文件则比较棘手。在第二种情况下,它是path on the host,这使得检索持久文件变得容易得多。我建议在两种情况下都运行“ docker-compose config”,并查看docker-compose内部转换语句的方式的不同。