sameersbn / docker-redmine

Docker Image for Redmine
http://www.damagehead.com/docker-redmine/
MIT License
1.26k stars 497 forks source link

Deinstallation of Redmine Plugin failed #426

Open rkraemer opened 4 years ago

rkraemer commented 4 years ago

I use this docker-redmine on a Synology via docker-compose and it runs well. Now I like to install the Plugin clipboard_past from "git clone https://github.com/peclik/clipboard_image_paste.git" an try to install it with docker exec -it redmine_redmine_1 redmine-install-plugins but it fails with an error.

Installing gems required by plugins...
Your application has set without to "development:test". This will override the global value you are currently setting
Migrating plugins. Please be patient, this could take a while...
rake aborted!
NoMethodError: undefined method `to_prepare' for ActionDispatch::Callbacks:Class

Now I try to deinstall the Plugin as described in the wik, but this failed also. I try with and without the DB environment, but rake cant connect to the db and therefor not deinstall the plugin. docker run --name=redmine -it --rm \ --env='DB_ADAPTER=postgresql' \ --env='DB_HOST=localhost' \ --env='DB_PORT=5432' \
--env='DB_NAME=redmine_production' \ --env='DB_USER=redmine' --env='DB_PASS=DBRedmine1' \ --volume=/volume1/docker/redmine/redmine_data:/home/redmine/data \ sameersbn/redmine:4.1.1-2 \ app:rake redmine:plugins:migrate NAME=clipboard_image_paste VERSION=0`

Note: I renamed the volume redmine_data: instead redmine.

What is wrong? As this faulty plugin can´t be deinstalled, instalation of other plugins are blocked.

Thanks for your support. regards Ralf

jcormier commented 4 years ago

I generally use docker-compose to run these commands. In this case, it would help because you're trying to run the redmine container without starting the database container.

A similar command with docker-compose might be: which should start the depending containers as well.

 $ docker-compose run redmine app:rake redmine:plugins:migrate NAME=clipboard_image_paste VERSION=0
Creating docker-redmine_postgresql_1 ... done
Initializing logdir...
Initializing datadir...
Symlinking dotfiles...
Installing configuration templates...
Configuring redmine...
Configuring redmine::database..
Configuring redmine::unicorn...
Configuring redmine::secret_token...
Generating a session token...
Note:
  All old sessions will become invalid.
  Please specify the REDMINE_SECRET_TOKEN parameter for persistence.
  **SHOULD** be defined if you have a load-balancing Redmine cluster.
Configuring redmine::max_concurrent_ajax_uploads...
Configuring redmine::sudo_mode...
Configuring redmine::autologin_cookie...
Configuring redmine::backups...
Configuring nginx...
Configuring nginx::redmine...
Running raketask redmine:plugins:migrate...
Plugin clipboard_image_paste was not found.

Note: I don't know if you need to uninstall the plugin. If it failed during install I would have expected the database to back out the changes.

CSCSxx commented 2 years ago

Hi there, sporadically we also have problems with the installation of plugins. Since input via the console via the Synology DSM is only possible with difficulty, we do the following:

  1. Backup data folder and database
  2. Delete all folders except files & template
  3. Create folder plugins
  4. Download all used plugins again and store them in the plugins folder (very important, never use the old folders!)
  5. Reset Docker Image in the DSM Docker menu
  6. Start the image and wait... Everything will be reinstalled and then running again
jcormier commented 2 years ago

I've not run into any spontaneous issues with plugin install.

4 Download all used plugins again and store them in the plugins folder (very important, never use the old folders!)

This is a bit confounding. The docker image never modifies any of the files from the plugin folder. During launch, it copies all the files from data/plugins to inside the container, so there shouldn't be any way for Redmine to modify them either.

If recreating the plugins dir helps, then next time it happens: Move the plugins dir to say plugins_old, recreated it like you normally do and then diff the two folders to see what has changed. diff -r plugins_old plugins

The tmp, backups, and files directory are the only ones the container actually writes to. It's always been enough to delete the tmp directory and bring the container down and back up to recover from something that's gone wrong.