2013-05-07 77 views
5

Tôi có một thư mục phương tiện lưu trữ tất cả hình ảnh đã tải lên của mình trong quá trình phát triển và tôi đang đẩy dự án django (1.5.1) của tôi lên máy chủ dev trên heroku. Bên trong thư mục phương tiện truyền thông tôi cóHeroku xóa các tập tin trên git push?

media/ 
    # cache and images were commited before .gitignored was added 
    cache/ # store thumbnails 
    images/ # store images 
    .gitignore 

các .gitignore có

* 
!.gitignore 

Vấn đề là bất cứ khi nào tôi git push to Heroku, upload thử nghiệm của tôi đang bị xóa sổ bởi git. Có cách nào để giải quyết vấn đề này không?

Trả lời

9

Đây không phải là vấn đề với Git, mà là với Heroku. Heroku's file system là tạm thời và được đặt lại giữa các lần triển khai. Sử dụng một dịch vụ như Amazon S3 để lưu trữ các tệp đã tải lên.

+0

Tôi không chắc liệu điều này có giúp được vấn đề của tôi hay không. Tôi không muốn các tập tin mới trên heroku bị xóa sổ. Tôi không quan tâm về những gì có trong thư mục git media. – Derek

+0

@ Derek: Không phải git đang xóa chúng - Heroku có hệ thống tệp tạm thời (các tệp tạm thời bị xóa giữa các lần triển khai). Sử dụng một cái gì đó giống như S3 để lưu trữ tệp vĩnh viễn. – mipadi

+2

@Derek mipadi là đúng. Tôi sẽ giải thích cách Heroku triển khai. Họ tạo một thư mục mới, kéo từ git vào thư mục mới (đây sẽ là phiên bản mới của bạn), sau đó khi nó sẵn sàng đối mặt với thế giới (tất cả công việc đã được thiết lập xong), nó sẽ chỉ thay đổi thư mục làm việc liên kết tượng trưng đến thư mục bản phát hành mới của bạn. Đây là cách triển khai đúng đắn nên hành xử. Nhưng điều đó có nghĩa là bất kỳ tệp nào được tải lên và lưu trữ trong phiên bản cũ của bạn sẽ không có sẵn cho phiên bản mới của bạn. Sử dụng Amazon S3 để lưu trữ các tệp đã tải lên của bạn và theo dõi chúng trong một DB. – JoshEmory