表題の環境を作ったので、ブログにも残しておきます。
docker/docker-composeが使用可能なアカウントが読み書きできる適当なディレクトリで、以下のような docker-compose.yml ファイルを作成します。
ポートは3000~3002へ変更していますが、このあたりは各自で適当に振り替えてください。
RocketChatの http://your.host.fqdn:3000 はホスト側のFQDNに変更してください。
また your.proxy.server:8080 も環境に合わせて変更してください。
imageのタグ"latest"はそれぞれバージョンを指定してあげたほうが良いと思います。
なお Jenkins は自分でバージョンを上げる機能があるので、latestでも良いかもしれません(新バージョンが出てくるとトップにメッセージが出て、リンクを踏むと更新できるようになっている)。
起動するにはまず docker-compose.ymlが存在するディレクトリ上に data ディレクトリを作成します。
CentOSでSELINUX=enforcingしている場合は
を実行しておいてください。
またfirewalldをenableにしたまま運用する場合、firewall-cmdでポートを使えるように設定しておいてください。
最初に起動する場合だけ
でうごかします。 up は、イメージのダウンロードから起動までおこないます。
ただし Jenkins は、初回の起動時のみログ上に初回パスワードが表示されます。
なので
を実行してパスワードを確認してください。
最後のjenkins部分をdocker-compose.yml上のほかのコンテナ名(redmine, mariadb, rocketchat, mongo)にすることで、それぞれのログを参照できます。
コンテナの状態確認は
doker-compose ps
です。動作中かどうか確認できます。
mongo-init-replicaはレプリカなのでExitしているのが正常です。
全部一気に起動・停止させる場合は
でおこないます。今回はrestart指定をunless-stoppedにしているので、上記のstopをかけずにOSのrebootを行うと、自動でコンテナも再起動します。
個別コンテナの起動・停止・再起動は、logs同様最後にdocker-compose.yml上のコンテナ名を最後に指定します。
redmineはdepend_onでmariadbも指定しているのでstart時にmariadbが起動していなければ一緒に起動しますが、stop時はmariadbを落としません。
redmineのマイナーバージョンを3.3.1から3.3.2にしたい場合は、一旦redmineだけ停止し、docker-compose.ymlのimageラストのタグを3.3.2に変えてから以下のコマンドを実行します。
mariadb上のオブジェクト構成をマイナーバージョンで変えていなければ正常にバージョンアップが可能になります。
redmineのプラグインをインストールするためにログインしたい場合は、以下のコマンドで入ることができます。
どうもredmine(、jenkins、rocketchatも,)コンテナはUbuntu/apt構成なのでaptしたり、curlしたりする場合は、それぞれのプロクシ設定を行う必要があります。
Jenkins のプラグインは初期設定指示のプロクシ指定さえ正しく行えていれば、execする必要なく実行できます。
バックアップは、docker-compose.ymlの存在するディレクトリ上に backup をつくっておいて
以下のようなスクリプトをcrontabなどに仕込んでおけば1日分の復元は可能です。
上記スクリプトではrsyncで移動させていますが、別途rsyncサーバが必要なのでコメント化してあります。
当然、タグをlatestにしていて、復元時にメジャーバージョンアップされてしまうと戻せなくなったりするので注意してください。
おそらく、Redmine、Jenkins、rocketChatなどのアジャイル開発3種の神器はdocker-composeで上げ下げ・rysncでバックアップが正解なきがしています。
なので、PMOのおじさんたちはdocker/docker-composeはしっかり覚えて欲しいところですねえ..
docker/docker-composeが使用可能なアカウントが読み書きできる適当なディレクトリで、以下のような docker-compose.yml ファイルを作成します。
version: '2'
services:
jenkins:
image: jenkins:latest
restart: unless-stopped
volumes:
- ./data/jenkins:/var/jenkins_home
ports:
- 3002:8080
- 50000:50000
environment:
- TZ=Asia/Tokyo
- HTTP_PROXY=http://your.proxy.server:8080
- HTTPS_PROXY=http://your.proxy.server:8080
redmine:
image: redmine:latest
restart: unless-stopped
volumes:
- ./data/redmine:/usr/src/redmine/files
ports:
- 3001:3000
environment:
- REDMINE_DB_MYSQL=mariadb
- REDMINE_DB_PASSWORD=admin123
- TZ=Asia/Tokyo
- HTTP_PROXY=http://your.proxy.server:8080
- HTTPS_PROXY=http://your.proxy.server:8080
depends_on:
- mariadb
mariadb:
image: mariadb:latest
restart: unless-stopped
volumes:
- ./data/mariadb/conf:/etc/mysql/conf.d
- ./data/mariadb/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=admin123
- MYSQL_DATABASE=redmine
- TZ=Asia/Tokyo
rocketchat:
image: rocketchat/rocket.chat:latest
restart: unless-stopped
volumes:
- ./data/rocketchat:/app/uploads
ports:
- 3000:3000
environment:
- PORT=3000
- ROOT_URL=http://your.host.fqdn:3000
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://127.0.0.11
- TZ=Asia/Tokyo
depends_on:
- mongo
labels:
- "traefik.backend=rocketchat"
- "traefik.frontend.rule=Host: your.domain"
mongo:
image: mongo:3.2
restart: unless-stopped
volumes:
- ./data/mongo/db:/data/db
- ./data/mongo/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0
labels:
- "traefik.enable=false"
mongo-init-replica:
image: mongo:3.2
command: 'mongo mongo/rocketchat --eval "rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})"'
depends_on:
- mongo
ポートは3000~3002へ変更していますが、このあたりは各自で適当に振り替えてください。
RocketChatの http://your.host.fqdn:3000 はホスト側のFQDNに変更してください。
また your.proxy.server:8080 も環境に合わせて変更してください。
imageのタグ"latest"はそれぞれバージョンを指定してあげたほうが良いと思います。
なお Jenkins は自分でバージョンを上げる機能があるので、latestでも良いかもしれません(新バージョンが出てくるとトップにメッセージが出て、リンクを踏むと更新できるようになっている)。
起動するにはまず docker-compose.ymlが存在するディレクトリ上に data ディレクトリを作成します。
CentOSでSELINUX=enforcingしている場合は
chcon -Rt svirt_sandbox_file_t ./data
を実行しておいてください。
またfirewalldをenableにしたまま運用する場合、firewall-cmdでポートを使えるように設定しておいてください。
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --zone=public --add-port=3001/tcp --permanent
firewall-cmd --zone=public --add-port=3002/tcp --permanent
firewall-cmd --reload
最初に起動する場合だけ
docker-compose up -d
でうごかします。 up は、イメージのダウンロードから起動までおこないます。
ただし Jenkins は、初回の起動時のみログ上に初回パスワードが表示されます。
なので
docker-compose logs jenkins
を実行してパスワードを確認してください。
最後のjenkins部分をdocker-compose.yml上のほかのコンテナ名(redmine, mariadb, rocketchat, mongo)にすることで、それぞれのログを参照できます。
コンテナの状態確認は
doker-compose ps
です。動作中かどうか確認できます。
mongo-init-replicaはレプリカなのでExitしているのが正常です。
全部一気に起動・停止させる場合は
docker-compose start
docker-compose stop
でおこないます。今回はrestart指定をunless-stoppedにしているので、上記のstopをかけずにOSのrebootを行うと、自動でコンテナも再起動します。
個別コンテナの起動・停止・再起動は、logs同様最後にdocker-compose.yml上のコンテナ名を最後に指定します。
docker-compose start redmine
docker-compose stop redmine
docker-compose restart redmine
redmineはdepend_onでmariadbも指定しているのでstart時にmariadbが起動していなければ一緒に起動しますが、stop時はmariadbを落としません。
redmineのマイナーバージョンを3.3.1から3.3.2にしたい場合は、一旦redmineだけ停止し、docker-compose.ymlのimageラストのタグを3.3.2に変えてから以下のコマンドを実行します。
docker-compose rm redmine
docker-compose up -d redmine
mariadb上のオブジェクト構成をマイナーバージョンで変えていなければ正常にバージョンアップが可能になります。
redmineのプラグインをインストールするためにログインしたい場合は、以下のコマンドで入ることができます。
docker-compose exec redmine /bin/bash
どうもredmine(、jenkins、rocketchatも,)コンテナはUbuntu/apt構成なのでaptしたり、curlしたりする場合は、それぞれのプロクシ設定を行う必要があります。
Jenkins のプラグインは初期設定指示のプロクシ指定さえ正しく行えていれば、execする必要なく実行できます。
バックアップは、docker-compose.ymlの存在するディレクトリ上に backup をつくっておいて
以下のようなスクリプトをcrontabなどに仕込んでおけば1日分の復元は可能です。
#!/bin/sh
TAR=/usr/bin/tar
COMPOSE=/usr/local/bin/docker-compose
RSYNC=/usr/bin/rsync
# docker-compose.ymlのあるディレクトリフルパス
CONTAINERS_HOME=hogehoge
# rsync server config
RSYNC_SERVER=your.rsync.server
RSYNC_TARGET=your_rsync_server_target
#
# operations
#
cd ${HOGEHOGE}
${COMPOSE} stop
${TAR} cvfz ./backup/data.tar.gz ./data
${COMPOSE} start
#${RSYNC} -avz --delete ${CONTAINERS_HOME}/backup/ ${RDYNC_SERVER}:${RSYNC_TARGET}
上記スクリプトではrsyncで移動させていますが、別途rsyncサーバが必要なのでコメント化してあります。
当然、タグをlatestにしていて、復元時にメジャーバージョンアップされてしまうと戻せなくなったりするので注意してください。
おそらく、Redmine、Jenkins、rocketChatなどのアジャイル開発3種の神器はdocker-composeで上げ下げ・rysncでバックアップが正解なきがしています。
なので、PMOのおじさんたちはdocker/docker-composeはしっかり覚えて欲しいところですねえ..
0 件のコメント:
コメントを投稿