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"
}
]