我在配置持久数据方面遇到了麻烦Mariadb
.我正在使用docker-compose
,将每个服务放在一个容器中(Nginx
,PHP-FPM
和Mariadb
).除了Mariadb
不存储数据外,一切正常.每次重新启动容器时,都会丢失所有数据.然后我发现我可以使用另一个容器来保存数据,甚至不必运行.
所以我在Mariadb
容器volume_from
内容容器中使用.但是当我这样做时,当我尝试映射卷时/var/lib/mysql
,Container MariaDb
无法启动.
错误
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"]
Polinux.. 8
我这样做的方式是我使用busybox存储和与mariadb共享的所有数据.然后--volumes-from
在mariadb中使用链接目录.请查看我简化的compose.yml
文件.
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" }
]
我这样做的方式是我使用busybox存储和与mariadb共享的所有数据.然后--volumes-from
在mariadb中使用链接目录.请查看我简化的compose.yml
文件.
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" }
]