tôi đang chạy ứng dụng của tôi sử dụng Docker-soạn với bên dưới tập tin ymllàm thế nào để tôi sao lưu cơ sở dữ liệu trong Docker
postgres:
container_name: postgres
image: postgres:${POSTGRES_VERSION}
volumes:
- postgresdata:/var/lib/postgresql/data
expose:
- "5432"
environment:
- POSTGRES_DB=42EXP
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
node:
container_name: node
links:
- postgres:postgres
depends_on:
- postgres
volumes:
postgresdata:
Như bạn có thể thấy ở đây, tôi đang sử dụng một named volume
để quản lý postgres nhà nước.
Theo các tài liệu chính thức, tôi có thể sao lưu một khối lượng như dưới đây
docker run --rm --volumes postgresdata:/var/lib/postgresql/data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
Một số hướng dẫn khác đề nghị tôi sử dụng các chức năng được cung cấp bởi pg-dump
postgres để sao lưu.
pg_dump -Fc database_name_here > database.bak
Tôi đoán tôi sẽ phải vào bên trong vùng chứa postgres để thực hiện chức năng này và gắn thư mục sao lưu vào máy chủ lưu trữ.
Có một cách tiếp cận tốt hơn/thích hợp hơn phương pháp kia không?
Khi tôi gọi Docker exec -u pg_restore C -d postgres
Andi
Tệ của tôi, bạn nên thêm tùy chọn --interactive cho docker exec. Tôi đã chỉnh sửa câu trả lời gốc để sửa lỗi này. – tck
typo nhỏ: s/DATABSE/DATABASE/(cảm ơn câu trả lời ;-) –