mysql数据库存储在/home/mysql中,而不是/var/lib/mysql中。该目录以前属于mysql。但是,当我使用这个yml文件运行命令docker-compose up时:
version: '3'
services:
mariadb:
image: mariadb
restart: always
volumes:
- /home/mysql:/var/lib/mysql
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
environment:
- "ES_JAVA_OPTS=-Xms750m -Xmx750m"
- bootstrap.memory_lock=false
site:
build: .
volumes:
- "./app:/app"
links:
- mariadb:mysql
environment:
- DOCKER_IP=172.19.0.2
depends_on: ['elasticsearch','mariadb']
ports:
- "3000:3000"停靠器容器能够运行,但是/home/mysql中的整个文件夹和文件都属于systemd-journal-remote,这将导致node服务器无法连接到mariadb。我必须停止docker实例,恢复mysql文件夹所有权,并删除ib_logfile0和ib_logfile1。
为什么安装/home/mysql会导致如此致命的问题?
更新:
我的解决方案是添加user: "mysql"
version: '3'
services:
mariadb:
image: mariadb
restart: always
volumes:
- /home/mysql:/var/lib/mysql
user: "mysql"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
environment:
- "ES_JAVA_OPTS=-Xms750m -Xmx750m"
- bootstrap.memory_lock=false
site:
build: .
volumes:
- "./app:/app"
links:
- mariadb:mysql
environment:
- DOCKER_IP=172.19.0.2
depends_on: ['elasticsearch','mariadb']
ports:
- "3000:3000"发布于 2017-11-13 14:02:26
您应该使用--user参数启动Docker的容器。如果您这样做并设置了与MySQL存储所有者相同的MySQL,那么您的权限就不会有问题。您必须检查如何在Docker中准确地完成此操作,因为我向您展示了正常命令行执行的示例。
发布于 2017-11-13 13:56:41
最有可能的是,用户systemd-journal-remote的uid与容器中的用户mysqld的uid相同。和ls -n核对一下。为了避免混淆,要么使用普通的uid,也许用chmod o+rwx作为root:root进行测试。
https://stackoverflow.com/questions/47265916
复制相似问题