このような感じで、Raspberry Pi 4でオープンソースのプロジェクト管理ソフトウェア「Redmine」を起動してみました。
普通にRedmineを構築する場合、MySqlやPostgreSQL等のデータベースの構築と、Ruby、Rails、そしてRedmine本体の設定が必要になりますが。そのあたりは行っておりません。
今回はデーモンが不要で軽量なPodmanで構築しましたので、Kubernetesのyamlファイルを1つ作成するだけのお手軽構築です。Docker Hubの公式RedmineイメージとMariadbイメージを使用させて頂いた感じです。
構築手順を記録しておこうと思います。
Ubuntu 20.04.1 LTSのインストール
Raspberry Pi 4のOSですが。サーバとして長期間安定して使用できるように、microSDカードは使わず、USBストレージからUbuntuを起動しました。まあチケット管理ではそれほど容量が必要ありませんが。容量8TBのHDDの価格帯はこのあたりまで下がっているのですね。ふむふむ。
Podmanのインストール
こちらの手順でPodmanをインストールします。
dockerでも動かせると思いますが。Raspberry Piということで、より軽量なPodmanで動かそうと思います。
Redmine公式イメージ
Redmineですが、ARM 64版の公式コンテナ・イメージが公開されています。
何かコンテナ起動時のパラーメタを調整したい場合、上記公式サイトを御覧ください。
データベースはARM 64版イメージが公開されているMariadbを使用させて頂きました。
PostgreSQLでも構築できると思います。以前、PostgreSQLも同様にRaspberry PiのPodmanで起動した実績があります。
Redmine起動設定
※21.1.31追記:
Podmanのバージョンアップの影響で、下記のYAMLファイルではポッドが正常に起動できない場合があります。
その場合、ポッドを手動で作成後、YAMLファイルを出力する必要が御座います。
手順は下記の記事を御覧ください。
ポッドの実行に使用する、Kubernetesのpod.yaml設定ファイルを作成します。
mkdir redmine
cd redmine
vi redmine-pod.yaml
次の内容になります。
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-2.0.6
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2020-09-21T09:10:29Z"
labels:
app: redmine-pod
name: redmine-pod
spec:
containers:
- name: redmine-web
env:
- name: REDMINE_DB_MYSQL
value: 127.0.0.1
- name: REDMINE_DB_DATABASE
value: redmine
- name: REDMINE_DB_USERNAME
value: redmine
- name: REDMINE_DB_PASSWORD
value: r3dmin3
image: docker.io/library/redmine:latest
ports:
- containerPort: 3000
hostPort: 3000
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
seLinuxOptions: {}
workingDir: /usr/src/redmine
volumeMounts:
- mountPath: /usr/src/redmine/files
name: redmine-volume
- name: redmine-db
env:
- name: MYSQL_ROOT_PASSWORD
value: rootmine
- name: MYSQL_DATABASE
value: redmine
- name: MYSQL_USER
value: redmine
- name: MYSQL_PASSWORD
value: r3dmin3
image: docker.io/library/mariadb:latest
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
seLinuxOptions: {}
workingDir: /
volumeMounts:
- mountPath: /var/lib/mysql
name: db-volume
volumes:
- name: redmine-volume
hostPath:
path: /home/ubuntu/redmine/redmine
type: Directory
- name: db-volume
hostPath:
path: /home/ubuntu/redmine/mysql
type: Directory
status: {}
いつもの通り、mariadbデータベースは/var/lib/mysqlディレクトリを永続化しています。Redmineは/usr/src/redmine/filesディレクトリを永続化していますが、基本的にコンテンツはすべてデータベースに入るようですので、永続化しなくても動く感じがします。
それではkubernetesを再生(play)してポッドを起動します。
sudo podman play kube ./redmine-pod.yaml
このような感じで、MariadbとRedmineのコンテナイメージが起動しました。
WebブラウザでRedmineへアクセスします。
http://<Raspberry PiのIPアドレス>:3000
初期ログインユーザ/パスワードはadmin/adminのようです。
このような感じで、Redmineの初期設定が完了して、プロジェクトの追加やチケット管理ができるようになりました。
ポッドの停止は次のコマンドになります。
sudo podman pod stop redmine-pod;sudo podman pod rm redmine-pod
Redmineサーバですが、DockerやPodmanのようなコンテナ管理システムを使わないで構築しようとすると、結構大変だった気がします。
2020年9月現在、yamlファイルを1つ作るだけで起動できる時代になりました。
ディスプレイ・マウス・キーボードが必要ないわゆる「サーバ・ハードウェア」が必要という時代でもなく、Raspberry PiのようなARMアーキテクチャのシングルボード・コンピュータで、数分で構築できてしまうのですね。
電気代も節約できますし。
チケット管理が必要でしたら、宜しければお試し下さい。