Thiết lập mount kết xuất cơ sở dữ liệu
Bạn sẽ cần gắn kết xuất vào vùng chứa để có thể truy cập nó. Một cái gì đó tương tự như thế này trong docker-compos.yml:
db:
volumes:
- './db_dump:/db_dump'
Tạo một thư mục cục bộ có tên db_dump
và đặt db_dump.gz
của bạn nộp ở đó.
Khởi động vùng chứa cơ sở dữ liệu
Sử dụng POSTGRES_DB
trong môi trường (như bạn đã đề cập trong câu hỏi của mình) để tự động tạo cơ sở dữ liệu. Bắt đầu db
tự nó, không có máy chủ rails.
docker-compose up -d db
Nhập dữ liệu
Chờ vài giây để cơ sở dữ liệu khả dụng. Sau đó, nhập dữ liệu của bạn.
docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz
Bạn cũng có thể chỉ cần tạo một tập lệnh để thực hiện việc nhập này, dán tập lệnh đó vào hình ảnh của bạn, sau đó sử dụng một lệnh docker-soạn duy nhất để gọi điều đó. Hoặc bạn có thể kiểm tra tập lệnh entrypoint của mình xem có tệp kết xuất hay không, và nếu có, hãy giải nén nó và nhập nó ... bất cứ điều gì bạn cần làm.
Khởi động máy chủ rails
docker-compose up -d web
Tự động hóa việc này
Nếu bạn đang làm việc này bằng tay để chuẩn bị cho một thiết lập mới, thì bạn đã hoàn tất. Nếu bạn cần tự động hóa điều này thành chuỗi công cụ, bạn có thể thực hiện một số công việc này trong một tập lệnh. Chỉ cần khởi động các vùng chứa riêng biệt, thực hiện nhập db ở giữa và sử dụng sleep
để giải quyết mọi sự chậm trễ khi khởi động.