Docker環境でGLPI0.85.5から9.2.1アップデートしたときの手順メモです。
9.4系が最新ですがDBのマイグレーションでテーブル関連のエラーが出るため保留にしました。
公式フォーラムで何件か投稿がありましたので、詳細確認後にアップグレードしたいと思います。
####その他対応内容
-
phpのタイムゾーン設定(php.ini)
参考:Dokcerの公式wordpressコンテナのphp.iniの場所 -
データベースの初期データ読込み
参考:docker上のmysqlを使うにあたりよくあるパターン
##環境
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
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のタイムゾーン設定 ※修正箇所のみ
[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の初期設定
MYSQL_ROOT_PASSWORD=rootpass
MYSQL_DATABASE=glpi
MYSQL_USER=glpi
MYSQL_PASSWORD=userpass
##データベースの初期データ読込み
yyyymmdd.sql
GLPI0.85.5のデータベースのmysql dumpを準備しました。
dbディレクトリの直下に配置しています。
下記の記載により初期データのリストアが可能です。
詳細は上記参考ページをご確認ください。
- ./db:/docker-entrypoint-initdb.d
##プラグイン
利用しているプラグインは[File injection](※0.85ではdata injection)のみです。
バージョンにあったプラグインを公式ページよりダウンロード。
ファイルをコピーするプロセスをDockerfileに記載しております。
このプラグインをアプリ起動後に有効化します。
##データベースのバックアップ設定(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へのアップグレード
-
データセンターのラックの管理