当我第一次使用dokku部署我的应用程序时,我使用docker-option托管了uploadsIMG文件夹,并且一切正常,但是当我更新或重新启动应用程序时,我会丢失所有图像等。 谢谢
我尝试了docker-option:
`dokku docker-options:add betrocapi run "-v /home/dokku/dataBetroc:/uploadsIMG"`
`dokku docker-options:add betrocapi deploy "-v /home/dokku/dataBetroc:/uploadsIMG"`
当我跑步时:
`dokku docker-options betrocapi`
它给了我
`Build options:
--link dokku.mysql.betrocsql:dokku-mysql-betrocsql
Deploy options:
--link dokku.mysql.betrocsql:dokku-mysql-betrocsql
--restart=on-failure:10
-v /home/dokku/dataBetroc:/uploadsIMG
Run options:
--link dokku.mysql.betrocsql:dokku-mysql-betrocsql
-v /home/dokku/dataBetroc:/uploadsIMG
`
但是当我在我的i应用程序中更改某些内容并重新运行git push dokku master
时,我会丢失所有照片。
新部署的日志为:
` CHECKS file not found in container: Running simple container check...
-----> Waiting for 10 seconds ...
-----> Default container check successful!
-----> Running post-deploy
-----> VHOST support disabled. Skipping domains setup
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
Reloading nginx
-----> Setting config vars
DOKKU_APP_RESTORE: 1
-----> Found previous container(s) (d48be97bb479) named betrocapi.web.1
=====> Renaming container (d48be97bb479) betrocapi.web.1 to betrocapi.web.1.1547646932
=====> Renaming container (402abba16e28) fervent_hoover to betrocapi.web.1
-----> Shutting down old containers in 60 seconds
=====> d48be97bb47914c666fbcff5ede8fdf82093dad6c451e6bad2168b14f23ee41f
`
Ps:我也尝试:dokku storage:mount ....
相同的结果。
任何人都可以向我解释为什么?
谢谢
答案 0 :(得分:0)
Dokku与heroku具有相同的基础。
Heroku文件系统是临时的,因此对该文件系统的任何更改将仅存在于运行应用程序的dokku的最后一个活动容器中。因此,当您推送代码时,dokku会创建一个包含应用程序文件的新容器,然后将其替换为旧容器。关闭或重新启动应用程序时也会发生同样的事情。
使用dokku存储有可能使其工作,只需遵循本指南http://dokku.viewdocs.io/dokku~v0.7.2/advanced-usage/persistent-storage/的某些步骤,但请注意,您将必须使用相对路径ex。应用中的“ / app / storage”,以便进行存储。但是,根据我们在产品上运行dokku应用1年后的经验,您可以通过dokku的工作原理的神秘原因轻松地将文件搞砸。
如果您确实需要存储数据,我建议使用专用文件存储服务,例如AWS S3,它非常便宜。您可以使用一些宝石来存储它们,这些宝石可以轻松地帮助您处理S3中的文件,例如papeclip,蜻蜓,activestorage(如果您使用的是Rails 5.2)。