如何修复新部署应用程序DOKKU后丢失上传文件的问题

问题描述 投票:0回答:1

当我第一次使用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 ....相同的结果。

任何人都可以向我解释原因吗?

谢谢

docker deployment dokku
1个回答
0
投票

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)。

© www.soinside.com 2019 - 2024. All rights reserved.