概要
- pleasanterも1.2系統になったのでdocker 環境定義を最新に更新しました。
- pleasanter+PostgreSQL+SSL+docker な構成を作ってみた の2022年度版です
- 昨今の状況を考慮してawsのarm系のインスタンスタイプでも動かせるように調整しています。(m1 macでも動くョ!)
コンテナ構成
作成したコンテナ構成は以下となります。
No | コンテナ名 | 概要 | 定義ファイル |
---|---|---|---|
1 | https-portal | HTTPS通信用。Let's Encryptを用いた証明書取得の自動化 | docker-compose.https-portal.yml |
2 | pleasanter-web | PleasanterのWebシステム | docker-compose.yml |
3 | postgres-db | PostgreSQL DB(Pleasanterで使用されるDB) | docker-compose.yml |
4 | cron-backup | バックアップ用のクローンプログラムを格納 | docker-compose.yml |
# EC2環境構築準備
環境としてamazon linuxを想定します。
今回は時代の流行りに乗ってarm系のインスタンスを使用することとします。
基本的にはdockerが動作すれば問題なく動作するため、一般的なVPSでも稼働させる事はできると思います。
swap追加
節約でnano系のインスタンスを使おうと思った場合、disk領域を拡張してswapを追加しておくべきです。
(対策をせずに動かすとメモリ不足となる可能性が高いため。)
追加に関してはは以下、gitsを参考にしてください。
amazon linuxにdockerを入れる
手始めに素のamazon linuxにdockerを入れます。
以下コマンドはdocker実行のために、グループを追加しているので、設定を反映させるためには追加が完了したら一度ログアウトする必要があります。
sudo yum update -y &&
sudo yum install -y docker &&
sudo yum install -y wget git &&
sudo service docker start &&
sudo systemctl enable docker.service &&
sudo usermod -a -G docker ec2-user &&
hash -r
docker composeを入れる
intel系の環境の場合
intel系のlinuxの場合は以下コマンドでcomposeを入れることができます。
(バージョンがちよっと古いかな...。)
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose &&
sudo chmod +x /usr/local/bin/docker-compose &&
docker-compose --version
arm系の環境の場合
arm系の場合、公式のzipとして対象のバイナリがリリースされていないので、
以下サイトを参考にさせて頂きました。
Amazon EC2 (Arm版)でdocker-composeを動作検証
sudo yum install -y python37 python3-devel.$(uname -m) libpython3.7-dev libffi-devel openssl-devel &&
sudo yum groupinstall -y "Development Tools" &&
sudo python3 -m pip install -U pip &&
python3 -m pip install docker-compose &&
docker-compose --version
docker-composeのバージョンが確認できれば一段落です。
dockerのデータ置き場を変更する
デフォルト状態では、dockerのイメージ、データの置き場きec2の本体領域になってしまいす。
初期構成のままですとこの状態では、すぐにdisk fullになってしまうため以下gitsで拡張領域に移動します。
pleasanterの動作準備
pleasanterイメージの構築
linuxにログインして以下コマンドを起動します。
これにより、対象となるイメージのビルドが行われてpleasanterの実行準備が整います。
mkdir git &&
sudo yum -y install git &&
cd git &&
git clone https://github.com/yamada28go/pleasanter-docker-PostgreSQL.git &&
cd pleasanter-docker-PostgreSQL &&
git checkout origin/master_1.2 &&
docker-compose build --no-cache &&
docker-compose up -d pleasanter-web postgres-db &&
sleep 30 &&
docker ps | grep pleasanter-web | cut -d' ' -f 1 | xargs -I {} docker exec {} cmdnetcore/codedefiner.sh &&
docker-compose stop
pleasanterのバージョンを変更する場合
pleasanterのバージョンは環境変数にGitのハッシュ値を指定する事で設定できるように設定されています。
動作させたいpleasanterバージョンに指定がある場合、docker-compose.ymlにおいて以下の環境変数設定を切り替えてください。
pleasanter-web:
build:
context: pleasanter/.
args:
# バージョンを指定
# 1.2.22.1 : c5a2153216da40bb609d755e85a05fa455d2f4d4
- GIT_HASH=c5a2153216da40bb609d755e85a05fa455d2f4d4 # ← ★ Git Has設定
起動確認
まずは、イメージがきちんと動作する状態か確認しましょう。
この状態で起動すると、sslがない状態で8001番ポートでpleasanterが待機します。
docker-compose up
ec2のセキュリティグループの設定を変更して、8001番ポートにアクセスできるようにして、
ブラウザでアクセスしてみましょう。
必要なアカウント情報は以下となります。
正しくログインができれば、コンテナの準備は成功したこととなります。
user: Administrator
pass: pleasanter
SSL起動設定
イメージが正しく動作することを確認したら、
SSLで通信ができるように設定を切り替えましょう。
awsのセキュリティグループの設定を切り替えてhttp(80)、https(443)が通るようにしましょう。
(Let's Encryptのドメイン認証の関係で80ポートが必要となります。)
httpsの通信はHTTPS-PORTALのイメージを使います。
このイメージの設定は「docker-compose.https-portal.yml」に書かれています。
ファイルの★の部分を変更します。
~ 抜粋 ~
# 通信を暗号化
https-portal:
image: steveltn/https-portal:1
ports:
- '80:80'
- '443:443'
links:
- pleasanter-web
restart: always
environment:
DOMAINS: 'wordpress.example.com -> http://pleasanter-web' ← ★1
# 本番モードへ切り替え
# STAGE: 'production' ← ★2
# 証明書を強制的に再取得する
# FORCE_RENEW: 'true'
~ 抜粋 ~
★ | 意味 |
---|---|
★1 | wordpress.example.comをご自分のドメイン名に置き換えてください。 |
★2 | コメントを外すとLet's Encrypt から発行された証明書を使います。コメント付きだとオレオレ証明書で動きます。 |
設定が完了したらデーモンを起動します。
コマンドに「-d」をつけると
docker-compose -f docker-compose.yml -f docker-compose.https-portal.yml up
ご自分のドメインにアクセスできれば設定完了です。
pleasanterの設定ファイル変更
pleasanter側のパラメータ設定を切り替えたい場合、以下パスにコンテナ起動時のパラメータ設定がコピーされてきます。
{gitでチェックアウトしたルートディレクトリ}/pleasanter/parameters/raw
設定が必要な項目を変更して以下パスに展開しておくと、pleasanterの起動時に対象ファイルがコピーされて対象の設定が適応されるようになります。
{gitでチェックアウトしたルートディレクトリ}/pleasanter/parameters/customize
バックアップ設定
本格的に使用するためにはバックアップの設定は必須となります。
長くなりましたので、バックアップの設定に関しては次の記事に移動します。