Ich bin neu in Docker und Entwicklung eines Projekts mit Docker komponieren. Aus der Dokumentation habe ich gelernt, dass ich Data-Only-Container verwenden sollte, um Daten persistent zu halten, aber ich bin nicht in der Lage, dies mit docker-compose zu tun. Immer wenn ich docker-compose down
mache, entfernt es die Daten von db, aber dadurch docker-compose stop
werden die Daten nicht entfernt. Möglicherweise liegt das daran, dass ich nicht named Datenvolumen erstellen und docker-compose down
kaum alle Container entfernt. Also habe ich versucht, den Container zu benennen, aber es hat mir Fehler gemacht. haben Sie einen Blick auf meine yml
Datei:Docker Compose - Wie werden Datenbankdaten gespeichert?
version: '2'
services:
data_container:
build: ./data
#volumes:
# - dataVolume:/data
db:
build: ./db
ports:
- "5445:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
# - PGDATA=/var/lib/postgresql/data/pgdata
volumes_from:
# - container:db_bus
- data_container
geoserver:
build: ./geoserver
depends_on:
- db
ports:
- "8004:8080"
volumes:
- ./geoserver/data:/opt/geoserverdata_dir
web:
build: ./web
volumes:
- ./web:/code
ports:
- "8000:8000"
depends_on:
- db
command: python manage.py runserver 0.0.0.0:8000
nginx:
build: ./nginx
ports:
- "83:80"
depends_on:
- web
Die Docker für die data_container Datei ist:
FROM stackbrew/busybox:latest
MAINTAINER Tom Offermann <[email protected]>
# Create data directory
RUN mkdir /data
# Create /data volume
VOLUME /data
habe ich versucht, dies aber, indem Sie Docker-komponieren nach unten, gehen die Daten verloren. Ich versuchte, die data_container Benennung, wie Sie die Kommentarzeile sehen können, es warf mir diesen Fehler:
ERROR: Named volume "dataVolume:/data:rw" is used in service "data_container" but no declaration was found in the volumes section.
So jetzt, was ich tue, ist habe ich einen Stand nur allein Daten genannt Behälter und setzen, dass in der volumes_from
Wert der db. Es funktionierte gut und löschte keine Daten, selbst nachdem docker-compose down
getan wurde.
Meine Anfragen:
Was ist der beste Ansatz Behälter herzustellen, der die
docker-compose
unter Verwendung von Daten der Datenbank speichern kann und sie richtig zu benutzen?Mein Bewusstsein ist nicht einverstanden mit mir über die Vorgehensweise, die ich gewählt habe, die durch die Schaffung eines eigenständigen Datencontainers. Irgendwelche Gedanken?
Gibt es einen Grund, warum Sie wollen keinen Namen Volumen für Ihre Daten verwenden, wie 'Band: -/data/mydata:/var/lib/postgresql/data/pgdata' ist die bevorzugte Methode für Datencontainervolumes. – ldg
Ich habe versucht, dies zu tun und es wirft mich Fehler: 'FEHLER: Benannte Datenträger" dataVolume:/data: rw "wird im Dienst" data_container "verwendet, aber keine Deklaration wurde im Abschnitt Volumes gefunden." Ich bin auch neugierig auf Datenportabilität mit diesem Ansatz. –