Как решить проблему потери загруженных файлов после нового развертывания приложения DOKKU - PullRequest
0 голосов
/ 16 января 2019

когда я впервые развернул свое приложение с помощью dokku, я использовал опцию docker для размещения папки 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 .... тот же результат.

Кто-нибудь может объяснить мне, почему?

Спасибо

1 Ответ

0 голосов
/ 28 марта 2019

Докку имеют то же основание, что и героку.

Файловая система Heroku эфемерна, поэтому любые изменения в файловой системе будут жить только в последнем активном контейнере dokku, в котором запущено ваше приложение. Поэтому, когда вы нажимаете свой код, в основном, dokku создает новый контейнер с файлами вашего приложения, а затем заменяет его старым. То же самое происходит, когда вы закрываете или перезапускаете приложение.

Используя хранилище dokku, вы можете заставить его работать, просто следуйте инструкциям этого руководства http://dokku.viewdocs.io/dokku~v0.7.2/advanced-usage/persistent-storage/, но обратите внимание, что вам придется использовать относительный путь ex. '/ app / storage' в вашем приложении, поэтому хранилище работает. Но по нашему опыту, после 1 года работы с приложениями dokku на prod, вы можете легко испортить файлы по таинственной причине того, как работает dokku.

Если вам действительно нужно хранить данные, я рекомендую использовать специальную службу хранения файлов, такую ​​как AWS S3, это очень дешево. Есть несколько драгоценных камней, которые вы можете использовать для хранения, которые могут легко помочь вам обрабатывать ваши файлы в S3, такие как papeclip, dragonfly, activestorage (если вы используете rails 5.2).

...