はじめに
Macintosh を使用して ECS で Redmine を起動する手順をまとめてみました。
学習のためにとりあえず動かしてみる手順に過ぎないため、実運用で使用するためにはまだまだ改善が必要です。
開発PC(Mac)のdocker環境での動作検証
Docker for Mac のインストール
docker-compose のインストール
ファイルの作成
mkdir ~/docker-redmine/postgresql/data
mkdir ~/docker-redmine/redmine/data
vi ~/docker-redmine/docker-compose.yml
docker-compose.yml
version: '2'
services:
postgresql:
image: sameersbn/postgresql:9.6-4
environment:
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
volumes:
- ./postgresql/data:/var/lib/postgresql
redmine:
image: sameersbn/redmine:4.0.3-1
depends_on:
- postgresql
environment:
- TZ=Asia/Kolkata
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
- REDMINE_PORT=80
- REDMINE_HTTPS=false
- REDMINE_RELATIVE_URL_ROOT=
- REDMINE_SECRET_TOKEN=
- REDMINE_SUDO_MODE_ENABLED=false
- REDMINE_SUDO_MODE_TIMEOUT=15
- REDMINE_CONCURRENT_UPLOADS=2
- REDMINE_BACKUP_SCHEDULE=
- REDMINE_BACKUP_EXPIRY=
- REDMINE_BACKUP_TIME=
- SMTP_ENABLED=false
- SMTP_METHOD=smtp
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=:login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_INTERVAL=30
ports:
- "80:80"
links:
- postgresql
volumes:
- ./redmine/data:/home/redmine/data
コンテナ起動
cd ~/docker-redmine/
docker-compose build
docker-compose up
しばらく待って http://localhost/ でレッドマインのページが表示されたらOKです。
Amazon Elastic Container Service での起動
aws-cli のインストールと設定
ecs-cli のインストールと設定
ecs-cli configure --region ap-northeast-1 --cluster ecs-cli-test
設定ファイルの作成
vi ~/docker-redmine/docker-compose-ecs.yml
docker-compose-ecs.yml
version: '2'
services:
postgresql:
image: sameersbn/postgresql:9.6-4
environment:
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
redmine:
image: sameersbn/redmine:4.0.3-1
environment:
- TZ=Asia/Kolkata
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
- REDMINE_PORT=80
- REDMINE_HTTPS=false
- REDMINE_SUDO_MODE_ENABLED=false
- REDMINE_SUDO_MODE_TIMEOUT=15
- REDMINE_CONCURRENT_UPLOADS=2
- SMTP_ENABLED=false
- SMTP_METHOD=smtp
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=:login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_INTERVAL=30
ports:
- "80:80"
links:
- postgresql
EC2 キーペアの作成
クラスタの起動
Redmine を動かすためには最低このくらいは必要みたいです。
keypair には上記で作成済みのキーペア名を入力します。
ecs-cli up --keypair ec2-test-key --capability-iam --size 2 --instance-type t2.small
タスクの登録
タスクの作成から実行までを行おうとしますが、必要な設定が足りていないためエラーで失敗します。
ecs-cli compose -f docker-compose-ecs.yml up
AWSコンソールでのタスク修正
ECS のタスク定義:docker-redmine の詳細画面より「新しいリビジョンの作成」を実施。
docker-compose-ecs.yml にてコメントアウトしている内容をおもに登録します。
以下の登録を行い「作成」を実行。
ボリュームの登録
ボリューム
名前
postgresql-vol
ドライバー
local
ボリュームタイプ
Docker
スコープ
task
名前
redmine-vol
ドライバー
local
ボリュームタイプ
Docker
スコープ
task
コンテナ postgresql の設定修正
HEALTHCHECK Command の追加
CMD-SHELL,psql -d redmine_production -U redmine || exit 1
- 環境:基本 のチェックボックスをOFF
- ストレージとログ マウントポイントに postgresql-vol を選択
- path: /var/lib/postgresql
- Auto-configure CloudWatch Logs のチェックボックスを ON
コンテナ redmine の設定修正
- STARTUP DEPENDENCY ORDERING
- Container name:postgresql
- Condition:HEALTHY
- ストレージとログ マウントポイントに redmine-vol を選択
- path: /home/redmine/data
- Auto-configure CloudWatch Logs のチェックボックスを ON
AWSコンソールでのタスク実行
タスク定義:docker-redmine の最新版の詳細画面より、「タスクの実行」を実行。
EC2 起動タイプを使用してタスクを実行する。
起動したらタスクの詳細の redmine コンテナの詳細に外部リンクが表示されるのでクリック。
レッドマインの画面が無事出てきたらOK。
クラスタの削除
以下のコマンドでクラスタに関連するリソースを全て削除します。
タスク定義ファイルは残ります。
ecs-cli down --force
改善点
AWS コンソールでの操作が面倒なので、コマンドラインで設定を完結できるように修正したいです。