美文网首页
升级 Open Project 7.4 => 8.3.0

升级 Open Project 7.4 => 8.3.0

作者: gucs | 来源:发表于2019-04-07 18:31 被阅读0次

小长假最后一天,听完得到的「学习计划」和樊登的《能力陷阱》,忽然想起前几个月在 TickTick 添加的任务「升级 Open Project」。

原计划升级后睡个午觉,想不到女儿从 Disney 回到家才完成 :(

Docker Image

Open Project 官方镜像使用 PostgreSQL,中文支持不友好,因此做了自定义镜像。

Dockerfile

FROM openproject/community:7

MAINTAINER Jonathan Gu <gucs.net@gmail.com>

# timezone
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

COPY database.yml /usr/src/app/config/database.yml

database.yml

production:
  adapter: mysql2
  database: op5_db
  host: db
  username: root
  password: 123456
  encoding: utf8
  variables:
    # These are the default MySql Modes for rails 5.0 only excluding
    # ONLY_FULL_GROUP_BY which would interfere with the current implementation
    # of the query grouping by custom fields.
    sql_mode:
      "no_auto_value_on_zero,\
      strict_trans_tables,\
      no_zero_date,\
      strict_all_tables,\
      no_zero_in_date,\
      error_for_division_by_zero,\
      no_auto_create_user,\
      no_engine_substitution"

生成镜像

docker build -t gucs/open-project-7 .

Docker Compose

记不住长长的命令,又做了个 docker compose 文件:

  • 日志映射到 host,便于查询错误
  • 附件映射到 host,便于定时备份

docker-compose.yml

version: '3'
services:
  openproject:
    image: gucs/open-project-7
    container_name: op7
    ports:
      - "80:80"
    environment:
      - SECRET_KEY_BASE=secret
      - DATABASE_URL=mysql2://user:pwd@host/op_db
    volumes: 
      - $DOCKER_VOLUMES_ROOT/op7/logs:/var/log/supervisor
      - $DOCKER_VOLUMES_ROOT/op7/static:/var/db/openproject
    stdin_open: true
    tty: true

启动

docker-compose up -d

查看日志

docker-compose logs -f

问题 1:不能连接 MySQL

当前版本是 Open Project 7.4,计划升级到最新镜像 Open Project 8.3.1。

docker pull openproject/community:8

启动时提示以下错误信息:

LoadError: Error loading the 'mysql2' Active Record adapter. Missing a gem it depends on? mysql2 is not part of the bundle. Add it to your Gemfile.

在官网搜索到以下回复:

Try the version 8.3.0, for some reason mysql was removed in 8.3.1

重新拉 8.3.0 镜像:

docker pull openproject/community:8.3.0

问题 2:Web 服务反复重启

终于连上了 MySQL,完成了数据库升级,Web 服务又开始反复重启……

错误信息

INFO success: web entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
INFO exited: web (exit status 1; not expected)

进入容器,查看日志:

docker exec -it op7 bash

cd /var/log/supervisor
cat web-stderr.log

错误信息

No Space Left on Device

折腾了半天,以为 Open Project 的问题,没想到是硬盘没空间了……

删除无用的备份,重启,成功!

参考资料

Install OpenProject with Docker https://www.openproject.org/docker/

Docker image for OpenProject Community Edition https://hub.docker.com/r/openproject/community/tags

Docker MySQL: gem file not loaded https://community.openproject.com/projects/docker/work_packages/29788/activity

supervisord not taking proper actions upon failure of its services https://community.openproject.com/projects/docker/work_packages/24378/activity

Docker fails starting web-service https://community.openproject.com/topics/6274

相关文章

网友评论

      本文标题:升级 Open Project 7.4 => 8.3.0

      本文链接:https://www.haomeiwen.com/subject/fpasiqtx.html