Docker-Composer Problème Persistant De Données
j'ai du mal à configurer les données persistantes avec Mariadb
.
J'utilise docker-compose
, avec chaque service dans un seul conteneur ( Nginx
, PHP-FPM
et Mariadb
).
Tout fonctionne, sauf Mariadb
qui ne stocke pas de données. Chaque fois que je redémarre le conteneur, je perds toutes les données. Puis j'ai découvert que je pouvais utiliser un autre conteneur juste pour garder des données, et il n'a même pas besoin d'être en cours d'exécution.
donc j'utilise, dans Mariadb
conteneur volume_from
conteneur de contenu. Mais quand je fais cela, quand j'essaie de cartographier le volume /var/lib/mysql
, le conteneur MariaDb
ne démarre pas.
Erreur
2015-12-29 12: 16:40 7f2f02e4a780
InnoDB: erreur de système D'exploitation numéro 13 dans une opération de fichier.
InnoDB: l'erreur signifie que mysqld n'a pas les droits d'accès à
InnoDB: le répertoire.
l'erreur se réfère à un problème sur les permissions de volume, mais j'ai essayé de définir les permissions à travers Dockerfile
dans les deux conteneurs, et le problème persiste. Je suis un peu perdu. J'utilise OSX, donc je crois que c'est un problème OSX. Quelqu'un peut-il m'aider sur ce point?
C'est mon code:
Mon Docker Compose
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
Content Dockerfile
FROM debian:jessie VOLUME /var/lib/mysql CMD ["true"]
1 réponses
la façon dont je le fais est que j'utilise busybox pour toutes les données stockées et partagées avec mariadb. Ensuite, utilisez --volumes-from
dans mariadb pour lier ces répertoires. Jetez un oeil dans mon simpified "151940920 de fichier".
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
maintenant tous les fichiers de base de données sont accessibles sur OS hôte aussi et il ne devrait pas y avoir de problèmes de permissions.
mise à jour pour docker-composer 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
vous pouvez voir où docker stocke que volume sur votre disque dur en exécutant la commande:
docker volume inspect docker_database
[
{
"Name": "docker_database",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/docker_database/_data",
"Labels": null,
"Scope": "local"
}
]