当我第一次使用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
`
但是,当我在我的应用程序中更改某些内容并重新运行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 ....
相同的结果。
任何人都可以向我解释原因吗?
谢谢
Dokku与heroku具有相同的基础。
Heroku文件系统是短暂的,因此对文件系统的任何更改都将仅存在于运行应用程序的dokku的最后一个活动容器中。因此,当您推送代码时,dokku会创建一个包含应用程序文件的新容器,然后将其替换为旧容器。关闭或重新启动应用程序时会发生同样的事情。
使用dokku存储它可能让它工作只是按照本指南http://dokku.viewdocs.io/dokku~v0.7.2/advanced-usage/persistent-storage/的一些步骤,但请注意你将不得不使用相对路径ex。您应用中的“/ app / storage”存储工作。但是根据我们在1年后运行dokku应用程序的经验,你可以通过dokku如何工作的神秘原因轻松搞砸文件。
如果您确实需要存储数据,我建议使用专用的文件存储服务,例如AWS S3,它的价格非常便宜。您可以使用几种宝石来存储,这可以很容易地帮助您处理S3中的文件,如papeclip,dragonfly,activestorage(如果您使用的是rails 5.2)。