我在配置持久数据时遇到问题Mariadb
。
我在用着docker-compose
,每个服务都在一个容器中(Nginx
, PHP-FPM
and Mariadb
)。
一切正常,除了Mariadb
不存储数据。每次重新启动容器时,我都会丢失所有数据。然后我发现我可以使用另一个容器来保存数据,而且它甚至不需要运行。
所以我正在使用,在Mariadb
容器volume_from
内容容器。但是当我这样做时,当我尝试映射体积时/var/lib/mysql
, 容器MariaDb
不启动。
Error
2015-12-29 12:16:40 7f2f02e4a780
InnoDB:文件操作中操作系统错误编号 13。
InnoDB:该错误意味着mysqld没有访问权限
InnoDB:目录。
该错误是指有关卷权限的问题,但我尝试通过设置权限Dockerfile
在两个容器中,问题仍然存在。我有点失落。我使用的是 OSX,所以我相信这是 OSX 问题。谁可以帮我这个事?
这是我的代码:
我的 Docker 撰写
content:
build: containers/content
container_name: content
hostname: content
volumes:
- /var/lib/mysql
mariadb:
build: containers/mariadb
container_name: mariadb
hostname: mariadb
ports:
- "3306:3306"
volumes_from:
- content
environment:
- MYSQL_ROOT_PASSWORD=mariadb
- TERM=xterm
- PORT=3306
MariaDB Dockerfile
FROM debian:jessie
RUN apt-get update && apt-get install -y mariadb-server
EXPOSE 3306
内容 Dockerfile
FROM debian:jessie
VOLUME /var/lib/mysql
CMD ["true"]
我这样做的方式是使用 busybox 来存储与 mariadb 共享的所有数据。然后使用--volumes-from
在 mariadb 中链接该目录。请看一下我的简化版compose.yml
file.
db-data:
container_name: db-data
image: busybox:latest
volumes:
- /data/mysql:/var/lib/mysql
db:
container_name: db
image: million12/mariadb
restart: always
volumes_from:
- db-data
environment:
- MARIADB_USER=admin
- MARIADB_PASS=my_pass
现在,所有数据库文件也可以在主机操作系统上访问,并且不应该存在任何权限问题。
docker-compose 2.0 更新
version: '2'
volumes:
database:
services:
db:
container_name: db
image: million12/mariadb
restart: always
volumes_from:
- database
environment:
- MARIADB_USER=admin
- MARIADB_PASS=my_pass
您可以通过运行命令来查看 docker 在硬盘驱动器上存储该卷的位置:
docker volume inspect docker_database
[
{
"Name": "docker_database",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/docker_database/_data",
"Labels": null,
"Scope": "local"
}
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)