Help us understand the problem. What is going on with this article?

Docker環境でGLPIを0.85.5から9.2.1へアップグレード

Docker環境でGLPI0.85.5から9.2.1アップデートしたときの手順メモです。
9.4系が最新ですがDBのマイグレーションでテーブル関連のエラーが出るため保留にしました。
公式フォーラムで何件か投稿がありましたので、詳細確認後にアップグレードしたいと思います。

その他対応内容

環境

Docker version 18.09.1
docker-compose version 1.24.0
hostOS:CentOS7-minimal
GLPI:9.2.1

ベースイメージ
https://github.com/fjudith/docker-glpi
※オリジナルはmariaDBが5.5ですが10.3を使っています。

ディレクトリ構成

/glpi921
├docker-compose.yml
├glpi.env #データベースの設定
├db
 ├Dockerfile
 ├script
 │ └db_backup.sh #DBのバックアップスクリプト
 └yyyymmdd.sql #データベースのバックアップファイル(リストア用)
└app
 ├Dockerfile
 ├datainjection-2.5.2.tar.gz
 └php.ini

docker-compose.yml

docker-compose.yml
version: '2'

services:
  db:
    build: ./db
    env_file:
    - ./glpi.env
    environment:
    - "TZ=Japan"
    volumes:
    - glpi-db:/var/lib/mysql
    - ./db:/docker-entrypoint-initdb.d
    - glpi-db-backup:/backup
    ports:
    - 32806:3306/tcp
    restart: always

  app:
    build: ./app
    volumes:
    - /etc/localtime:/etc/localtime:ro
    environment:
    - "TZ=Japan"
    volumes:
    - glpi-app:/var/www/html/
    - ./app/php.ini:/usr/local/etc/php/php.ini
    links:
    - db:mysql
    ports:
    - 8081:80/tcp
    restart: always

volumes:
  glpi-db: {}
  glpi-db-backup: {}
  glpi-app: {}

Dockerfile #app

※修正箇所のみ
Vimを追加

RUN apt-get -y update
RUN apt-get install --no-install-recommends -yqq \
    zlib1g \
    cron \
    bzip2 \
    wget \
    nano \ 
    vim 

プラグインの配置と不要ファイルの削除を追記

COPY datainjection-2.5.2.tar.gz /var/www/html/plugins/
WORKDIR /var/www/html
RUN tar zxvf  plugins/datainjection-2.5.2.tar.gz -C plugins/
RUN rm plugins/remove.txt

EXPOSE 80
CMD ["apache2-foreground"]

Dockerfile #db

※オリジナルからの変更点:db_backup.shの配置とbackupディレクトリの作成

FROM mariadb
RUN apt-get update
RUN apt-get install -y  vim locales
RUN apt-get install -y language-pack-ja-base language-pack-ja
RUN locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LC_CTYPE ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP.utf8

COPY db_backup.sh /opt/
RUN chmod +x /opt/db_backup.sh
RUN mkdir backup

phpのタイムゾーン設定 ※修正箇所のみ

php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"

[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
mbstring.language = Japanese

DBの初期設定

glpi.env
MYSQL_ROOT_PASSWORD=rootpass
MYSQL_DATABASE=glpi
MYSQL_USER=glpi
MYSQL_PASSWORD=userpass

データベースの初期データ読込み

yyyymmdd.sql
GLPI0.85.5のデータベースのmysql dumpを準備しました。
dbディレクトリの直下に配置しています。
下記の記載により初期データのリストアが可能です。
詳細は上記参考ページをご確認ください。

docker-compose.yml
    - ./db:/docker-entrypoint-initdb.d

GUIでアップグレード

注意点:アップグレードを選択
glpi-update.jpg

プラグイン

利用しているプラグインは[File injection](※0.85ではdata injection)のみです。
バージョンにあったプラグインを公式ページよりダウンロード。
ファイルをコピーするプロセスをDockerfileに記載しております。
このプラグインをアプリ起動後に有効化します。
plugin01.jpg
plugin02.jpg
plugin03.jpg

データベースのバックアップ設定(1日1回)

※ホストサーバでの作業となります。
スクリプトファイルは前回の記事のままです。前回記事

$ crontab -e

18:30にデータベースのバックアップを実施

30 18 * * * docker exec glpi921_db_1 /opt/db_backup.sh

ホスト起動時にコンテナ起動

※ホストサーバでの作業となります。
crontabにてリブート時に自動的にコンテナを起動するように設定しました。

$ crontab -e
@reboot cd /home/docker/glpi921/; docker-compose up -d

今後運用で試したい機能

  • ユーザーサポート機能

    • インシデント管理
    • メールでのチケット登録
    • Googleフォーム経由でのチケット登録
  • 9.4へのアップグレード

    • データセンターのラックの管理
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away