docker-redmine,以及安装dmsf碰到的问题

方树
2023-12-01


为啥我用md写的目录点不动。。。

redmine

回首

run起来

使用docker搞起redmine。
首先拉下来:docker pull redmine

然后使用redmine内置的数据库,执行:docker run -dti --name red -p 23000:3000 redmine
运行后,在web中输入:ip:23000,初始密码:admin admin ;在web中修改密码:admin dockerred

使用自己的mysql:两个挂载目录可有可无,没有暂时不影响。但是正式使用必须有,因为你得备份数据啊。还有,如果插件安装失败,启动也会失败,可以暂时删除导致安装失败的目录。

docker run -dti --name red -p 23000:3000 \
-v /home/lw/redmine/plugins:/usr/src/redmine/plugins \
-v /home/lw/redmine/data/files:/usr/src/redmine/files \
--env='REDMINE_DB_MYSQL=172.16.21.65' \
--env='REDMINE_DB_PORT=10086' \
    --env='REDMINE_DB_USERNAME=root' \
    --env='REDMINE_DB_PASSWORD=root' \
    --env='REDMINE_DB_DATABASE=redmine' \
    --env='REDMINE_DB_ENCODING=utf8' \
redmine

docker run -dti --name red -p 23000:3000 \
-v /sda3root/dockerData/redmine/plugins:/usr/src/redmine/plugins \
-v /sda3root/dockerData/redmine/data/files:/usr/src/redmine/files \
--env='REDMINE_DB_MYSQL=172.16.21.65' \
--env='REDMINE_DB_PORT=10086' \
    --env='REDMINE_DB_USERNAME=root' \
    --env='REDMINE_DB_PASSWORD=root' \
    --env='REDMINE_DB_DATABASE=redmine' \
    --env='REDMINE_DB_ENCODING=utf8' \
redmine

docker logs -f red
http://192.168.123.3:23000/

版本:Redmine 4.1.1.stable

插件

安装插件会遇到问题:apt-get update更新失败

妈耶,我真是个傻子,用apt update就行,为啥非得用apt-get update,坑爹教程误人啊。问题解决,不用往下看了。

如果你的源很慢,那就考虑换源了。

进入容器,先看一些基础配置。

  • 你的系统:cat /etc/issue 有Ubuntu字样为ubuntu,没有则是centos 。输出 Debian GNU/Linux 10 。这个方法有很多种,但是容器使用的系统化简了太多太多。
  • 吐槽下:apt-get 无法更新,替换阿里源,更换dns,无法重启网络。
    没有vi,没有vim,aptget无法下载软件,没有ping。。。我特么心态崩了啊
  • 如果提示sudo没有,那就不加。
  • 有人说aptget换源后,执行失败是因为dns,需要修改为8.8.8.8,114.114.114.114,但是没更改,也可以,说明这个没用。

因为系统太精简,所以有些依赖没有,导致插件文档管家安装失败。然后更新apt-get update,发现无法更新。说要更换源。注意,更换源必须找系统对应的源,比如debian

首先备份源文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
然后将源文件里面的网址替换为阿里源或者清华源。因为没有vi和vim,也无法安装,只能使用echo。

cd /etc/apt
echo "">sources.list
echo "deb http://mirrors.aliyun.com/debian buster main">>sources.list
echo "deb http://mirrors.aliyun.com/debian-security buster/updates main">>sources.list
echo "deb http://mirrors.aliyun.com/debian buster-updates main">>sources.list

apt-get update ,还是失败

这是网友的分析:https://blog.csdn.net/shangyexin/article/details/102657776
报错后,尝试了更换软件源,都不可以,后更换网络,改用手机连接,发现可以更新;初步分析,应该是公司的深信服上网管理软件进行了限制,类似运营商的缓存劫持。

解决方案:更换https软件软件源
将上面的替换为https清华源:
cd /etc/apt
echo "">sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian buster main">>sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main">>sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian buster-updates main">>sources.list

apt-get clean;  # 清空缓存
apt-get update;  # 更新
apt-get -y install vim; # -y自动确认,更方便 

终于搞定!

文档管家

这是第一次:redmine的文件管家插件是真的难搞啊。搞了半天,没弄出来,遂放弃。
第二次搞定。
插件介绍教程:https://www.redmineplugins.cn/projects/1/plugin_blocks/23?tab=installation_notes
具体安装地址:https://github.com/danmunn/redmine_dmsf

docker exec -it lw-red /bin/bash
容器外-宿主机,插件挂载目录,下载dmsf源码:wget https://github.com/danmunn/redmine_dmsf/archive/master.zip
解压后重命名:unzip master.zip ,mv redmine_dmsf-master redmine_dmsf ,mv master.zip redmine_dmsf-master.zip

转到redmine目录 cd redmine ,容器进入的目录是 cd /usr/src/redmine

安装 gem 依赖项:bundle install --without development test

报错:

Installing ox 2.14.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /usr/local/bundle/gems/ox-2.14.1/ext/ox
/usr/local/bin/ruby -I /usr/local/lib/ruby/2.6.0 -r ./siteconf20210303-33-kyt5mo.rb extconf.rb
>>>>> Creating Makefile for ruby version 2.6.6 on x86_64-linux <<<<<
checking for rb_time_timespec()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

...省略

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /usr/local/bundle/extensions/x86_64-linux/2.6.0/ox-2.14.1/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/local/bundle/gems/ox-2.14.1 for inspection.
Results logged to /usr/local/bundle/extensions/x86_64-linux/2.6.0/ox-2.14.1/gem_make.out

An error occurred while installing ox (2.14.1), and Bundler cannot continue.
Make sure that `gem install ox -v '2.14.1' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  ox

按照提示安装:gem install ox -v ‘2.14.1’ --source ‘https://rubygems.org/’ ,继续报错。
原因分析:其实这是因为 Redmine 的 docker 镜像 缺少 ffi 安装必要的编译环境,从而导致失败,需要我们手动安装下。
步骤如下:

  • apt update。千万不要apt-get update ,这样会导致失败。为此我特么还更换源,搞半天。用更新apt-get:apt-get clean; # 清空缓存。 apt-get update; # 更新
  • 安装依赖:apt-get install gcc ruby-dev make

然后继续安装:

  • bundle install --without development test
  • bundle exec rake redmine:plugins:migrate RAILS_ENV=production 。可以简写为 rake redmine:plugins:migrate RAILS_ENV=production 。
  • 重启redmine:去宿主机 docker restart lw-red
  • 重启后,项目配置中选择文档管家。

自定义镜像:

创建Dockerfile,中间还得加上更换apt的源。

From redmine:latest  
RUN apt update  \  
&& apt-get -y --force-yes  install gcc ruby-dev make \  
&& gem install ox -v '2.14.1' --source 'https://rubygems.org/' 

构建镜像:docker build -t redmine-gogo .  

下面这些在github里的安装教程没有用到:

初始化/更新数据库:
RAILS_ENV=production bundle exec rake db:migrate

RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_dmsf

必须为Web服务器设置访问权限,例如:chown -R www-data:www-data plugins/redmine_dmsf。

重新启动Web服务器,例如 systemctl restart apache2

您应该通过Redmine界面配置插件:管理->插件-> DMSF->配置。

不要忘记在管理->角色和权限中为DMSF授予权限

将DMSF权限分配给适当的角色。

我用sudo,发现sudo不存在,那我不用就完了啊。

卸载:

  • cd [redmine-install-dir]
  • rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production
  • rm plugins/redmine_dmsf -Rf

迁移

需要对redmine进行备份,镜像,数据库,以及挂载的目录(使用docker inspect red 查看)。
redmine和别的mysql之类的不同,mysql只修改配置文件,redmine的插件安装有依赖,比如系统级的依赖,这些就没放到挂载目录里面,所以备份得备份容器,而不是只有镜像。

警告:没对挂载目录备份,导致图片没有导出来。图片在挂载目录:data/files 里面,所以挂载目录必须有

然后重新恢复:卧槽,看日志说插件安装不上。一脸懵逼。

会不会是我之前搞的错误的插件,导致无法启动?

删除挂载目录后重新启动,或者删除plugins插件目录里面出错的dmsf目录,都ok。数据都在,就是没有插件。

 类似资料: