使用Docker容器安装Redmine插件

16

我可以使用这两个命令安装Redmine。

docker run --name myred1 -e MYSQL_ROOT_PASSWORD=india -e MYSQL_DATABASE=redmine -v /my/custom:/etc/mysql/conf.d  -v /storage/mysql/datadir:/var/lib/mysql -d mysql:5.6

docker run --name abt -p 3000:3000 -v /my/own/datadir:/usr/src/redmine/files --link myred1:mysql -d redmine

但我该怎样安装scrum插件呢?

http://www.redmine.org/plugins/scrum-plugin

根据安装说明...

从插件页面的文件部分下载。

像任何Redmine插件一样,将其部署到插件文件夹中,确保文件夹名称为 scrum ,然后运行:

bundle exec rake redmine:plugins:migrate

我尝试在Docker容器中的命令提示符上执行上述命令。

root@d7b535b9c607:/usr/src/redmine/plugins/scrum# bundle exec rake redmine:plugins:migrate
(in /usr/src/redmine)

但它并没有安装插件。

3个回答

21

通过添加额外的数据卷来保留容器重新创建之间的插件。由于在没有使用 docker-compose 的情况下生成Docker容器会很麻烦,因此让我用它进行进一步的说明。

1. 创建描述您设置的 docker-compose.yml

它应该在单独的桥接网络中创建两个服务(一个用于MySQL,另一个用于Redmine):

version: '2'

networks:
  redmine-network:

volumes:
  redmine-plugins:
  redmine-themes:
  redmine-data:

services:
  mysql-for-redmine:
    image: mysql:5.6
    networks:
      - redmine-network
    volumes:
      # Consider using separate volume containers
      # instead of host directory mounts.
      - /my/custom:/etc/mysql/conf.d
      - /storage/mysql/datadir:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "<india>"
      MYSQL_DATABASE:      "redmine"

  redmine:
    image: redmine:3.3-passenger
    ports:
      - 3000:3000
    networks:
      - redmine-network
    volumes:
      - redmine-plugins:/usr/src/redmine/plugins
      - redmine-themes:/usr/src/redmine/public/themes
      - redmine-data:/usr/src/redmine/files
    environment:
      # Host name matches the MySQL container name.
      REDMINE_DB_MYSQL:        "mysql-for-redmine"
      REDMINE_DB_USERNAME:     "root"
      REDMINE_DB_PASSWORD:     "<india>"
      REDMINE_SECRET_KEY_BASE: "..."
    restart: always

2. 部署您的配置

只需从放置配置文件的目录运行docker-compose up -d即可。

3. 手动安装插件(和主题)

使用docker ps查找运行Redmine的容器名称,在我系统中它是root_redmine_1。运行以下命令以连接到此容器:

# docker exec -ti root_redmine_1 gosu redmine bash

它将在容器内为"redmine"用户打开一个shell。使用wgettar xjf来下载和提取你需要的插件。完成后退出shell。

4. 重新启动实例以检查插件是否正常工作

运行docker restart root_redmine_1命令并检查它是否按预期工作。由于插件放置在单独的数据卷上,因此它们应该能够在容器重建后生存。


在环境变量的情况下,我可以使用一致的语法,例如 REDMINE_DB_MYSQL=,而不是 REDMINE_DB_MYSQL: 吗? - shantanuo
1
我理解了。# 环境不接受=,因为它像图像一样是一个字典。卷和端口是列表。 - shantanuo
1
在执行 bundle install 命令之前,你可能需要先执行 apt update & apt install make gcc 命令。 - Norman Edance
1
如果你在使用docker-compose,你不需要直接编写docker命令。可以使用docker-compose exec redmine bashdocker-compose restart命令。 - rgov

5

无需解释在docker-composer级别说了什么。

version: '3'
services:

  redmine:
    image: redmine
    restart: always
    ports:
      - 3000:3000
    environment:
      - REDMINE_DB_MYSQL=mysql_redmine
      - REDMINE_DB_USERNAME=root
      - REDMINE_DB_PASSWORD=pass
      - REDMINE_PLUGINS_MIGRATE=true
    volumes:
      - ./redmine_data:/usr/src/redmine/files
      - ./redmine-plugins:/usr/src/redmine/plugins

  mysql_redmine:
    image: mysql:5.7
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_DATABASE=redmine
    volumes:
      - ./mysql-data_red:/var/lib/mysql 

环境变量REDMINE_PLUGINS_MIGRATE允许您直接迁移插件!还可以不必进入容器。
现在,您只需要在./redmine-plugins中使用git submodule add与您的插件git存储库即可。

2
# if the name of the redmine container is abt then use the following command to login:
docker exec -it abt bash

# change to plugins directory
cd plugins

# download source code
wget https://redmine.ociotec.com/attachments/download/440/scrum%20v0.16.2.tar.gz

# extract
tar xvf scrum\ v0.16.2.tar.gz

# install
bundle exec rake redmine:plugins:migrate

# restart container: 
docker restart abt

1
以这种方式做事,容器重新创建时您将失去所有插件。 - firegurafiku
1
我可以提交容器并创建一个包含所有插件的新镜像吗? - shantanuo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接