Die neueste Version des offiziellen mysql-Docker-Image erlaubt Ihnen, Daten beim Start zu importieren. Hier ist meine docker-compose.yml
data:
build: docker/data/.
mysql:
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./docker/data:/docker-entrypoint-initdb.d
volumes_from:
- data
Hier habe ich meine data-dump.sql unter docker/data
Dies ist relativ zu dem Ordner, aus dem Docker-Compose ausgeführt wird. Ich mounte diese SQL-Datei in dieses Verzeichnis /docker-entrypoint-initdb.d
auf dem Behälter.
Wenn Sie wissen möchten, wie das funktioniert, werfen Sie einen Blick auf deren docker-entrypoint.sh
auf GitHub. Sie haben diesen Block hinzugefügt, um den Import von Daten zu ermöglichen
echo
for f in /docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
Ein zusätzlicher Hinweis:Wenn Sie möchten, dass die Daten auch nach dem Stoppen und Entfernen des mysql-Containers beibehalten werden, benötigen Sie einen separaten Datencontainer, wie Sie in docker-compose.yml sehen. Der Inhalt des Datencontainers Dockerfile ist sehr einfach.
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8
VOLUME /var/lib/mysql
CMD ["true"]
Der Datencontainer muss für die Persistenz nicht einmal im Startzustand sein.