Redmine(Podman)

Table of Content

PodmanでRedmine(+MariaDB)を構築

コンテナ関連のモジュールをインストール

podmanを参照

RedmineとDBの公式イメージを取得

# podman pull docker.io/library/redmine:4.2.4
# podman pull docker.io/library/mariadb

結果を確認

# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/library/mariadb  latest      daf0f023c28d  31 hours ago  421 MB
docker.io/library/redmine  4.2.4       1b9992f60aa3  6 weeks ago   547 MB

イメージの基本情報を確認

# podman inspect docker.io/library/redmine:4.2.4
# podman inspect docker.io/library/mariadb:latest

作業フォルダを作成

# mkdir /usr/local/redmine
# cd /usr/local/redmine
永続化用のフォルダ作成
# mkdir -p /usr/local/redmine/data/plugins
# mkdir -p /usr/local/redmine/data/themes
# mkdir -p /usr/local/redmine/data/files
# mkdir -p /usr/local/redmine/data/db

Pod を作成

# podman pod create -p 3000:3000 --name redmine-pod
066d26409b1d91b22942aa806523e060413a61187594440b54a6233772c9d9f9

3000番はRedmine用のLISTENポート番号です。

結果を確認

[root@sent redmine]# podman pod ls
POD ID        NAME         STATUS      CREATED             INFRA ID      # OF CONTAINERS
066d26409b1d  redmine-pod  Created     About a minute ago  e98c4e319c3a  1

DBの永続化に使用するフォルダのボリューム作成

# podman volume create -o type=none -o device=/usr/local/redmine/data/db -o o=bind datastore

結果確認

# podman volume ls

DBのコンテナ作成

cofファイル使用版

cofファイルを準備

# mkdir -p /usr/local/redmine/data/conf/mysql/conf.d
# vi /usr/local/redmine/data/conf/mysql/conf.d/multibyte.cnf
-----------------------------------------------
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
-----------------------------------------------

DBのコンテナ作成

podman run --name=redmine-db -d --pod redmine-pod \
--env='MYSQL_DATABASE=redmine' \
--env='MYSQL_ROOT_PASSWORD=redmine' \
--env='MYSQL_USER=hoge' \
--env='MYSQL_PASSWORD=(パスワード))' \
-v datastore:/var/lib/mysql \
-v /usr/local/redmine/data/conf/mysql/conf.d:/etc/mysql/conf.d \
docker.io/library/mariadb

cofファイル使用しない版

DBのコンテナ作成

podman run --name=redmine-db -d --pod redmine-pod \
--env='MYSQL_DATABASE=redmine' \
--env='MYSQL_ROOT_PASSWORD=redmine' \
--env='MYSQL_USER=hoge' \
--env='MYSQL_PASSWORD=(パスワード)' \
-v datastore:/var/lib/mysql \
docker.io/library/mariadb  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

結果を確認

# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED         STATUS             PORTS                  NAMES
e98c4e319c3a  k8s.gcr.io/pause:3.5                          17 minutes ago  Up 56 seconds ago  0.0.0.0:3000->3000/tcp 066d26409b1d-infra
032a14edfe96  docker.io/library/mariadb:latest  mariadbd    58 seconds ago  Up 56 seconds ago  0.0.0.0:3000->3000/tcp redmine-db

LOGを確認

# podman logs redmine-db

文字コードの確認

# podman exec -it redmine-db bash
/# mysql -u root -p
> show variables like '%char%';
> show create database redmine;
> exit
/# exit

Readmineのコンテナ作成

podman run --name=redmine -d --pod redmine-pod \
--env='REDMINE_DB_MYSQL=127.0.0.1' \
--env='REDMINE_DB_USERNAME=hoge' \
--env='REDMINE_DB_PASSWORD=(パスワード)' \
-v /usr/local/redmine/data/plugins:/usr/src/redmine/plugins \
-v /usr/local/redmine/data/themes:/usr/src/redmine/public/themes \
-v /usr/local/redmine/data/files:/usr/src/redmine/files \
docker.io/library/redmine:4.2.4

結果を確認

#  podman ps
CONTAINER ID  IMAGE                             COMMAND               CREATED         STATUS             PORTS                  NAMES
e98c4e319c3a  k8s.gcr.io/pause:3.5                                    29 minutes ago  Up 12 minutes ago  0.0.0.0:3000->3000/tcp 066d26409b1d-infra
032a14edfe96  docker.io/library/mariadb:latest  mariadbd              12 minutes ago  Up 12 minutes ago  0.0.0.0:3000->3000/tcp redmine-db
517b081e0e12  docker.io/library/redmine:4.2.4   rails server -b 0...  32 seconds ago  Up 32 seconds ago  0.0.0.0:3000->3000/tcp redmine

file

LOGを確認

# podman logs redmine

systemd のUNITファイルを生成する

# cd /etc/systemd/system
# podman generate systemd --restart-policy no -n -f redmine-pod
/etc/systemd/system/pod-redmine-pod.service
/etc/systemd/system/container-redmine.service
/etc/systemd/system/container-redmine-db.service

systemd 設定を再読込する

# systemctl daemon-reload

手動によるsystemd操作を確認する

# systemctl enable pod-redmine-pod.service
Created symlink /etc/systemd/system/multi-user.target.wants/pod-redmine-pod.service → /etc/systemd/system/pod-redmine-pod.service.
Created symlink /etc/systemd/system/default.target.wants/pod-redmine-pod.service → /etc/systemd/system/pod-redmine-pod.service.

サービスの起動・停止・ステータス

# systemctl start pod-redmine-pod.service
# systemctl stop pod-redmine-pod.service
# systemctl status pod-redmine-pod.service

Kubernetesのyamlファイル作成

# cd /usr/local/redmine
# podman generate kube redmine-pod > redmine-pod.yaml

ポットレベルからの再作成準備(削除)

  • 稼働しているポッドの確認

    podman pod ls
    podman ps
  • ポッドを全て終了する場合

    podman pod stop --all
  • ポッドを全て削除する場合

    podman pod rm --all
  • イメージ

    podman images
  • イメージ全て削除

    podman rmi --all
    個別に削除する場合、コンテナIDを並べて記述
  • ボリューム

    podman volume ls
  • ボリューム を削除

    podman volume rm --all
  • ポッドの起動

    podman play kube ./redmine-pod.yaml

    ※[podman play kube]でポッドの起動するとボリュームの再利用の方法がわからなかったので未使用の予定

ネットワーク制限[未実施]

想定した動作をしないので未実施[最新版に期待?]

ポートのオープン

※実施しなくても接続できたので保留中

# firewall-cmd --permanent --zone=public --add-port=3000/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-all-zones

コメントを残す

メールアドレスが公開されることはありません。