📑

redmine を docker ワンライナーで起動する

2022/12/06に公開

docker-composeでredmineを動かす!みたいな記事は散見する。
その多くは場合 postgresql|mysql|mariadbとの組みあわせで語られている。

個人で動かしたいだけなのでわざわざRDBを建ててもバックアップがむしろ手間だ :)

実は redmine は単体で稼働する。

DBはどうするのか?
オフィシャル docker image について言えば実はなにも指定しなければ Sqliteドライバで起動する。

このことはちゃんと明記されてる。

https://hub.docker.com/_/redmine

REDMINE_DB_MYSQL, REDMINE_DB_POSTGRES, or REDMINE_DB_SQLSERVER
These variables allow you to set the hostname or IP address of the MySQL, PostgreSQL, or Microsoft SQL host, respectively. These values are mutually exclusive so it is undefined behavior if any two are set. If no variable is set, the image will fall back to using SQLite.

この手の docker image は後から極力手を加えなくていいように色々便利な機能が仕込んである場合が多い。
ドキュメントを熟読することをお勧めする。

なので最小構成は次の通りのCLIで起動できる。

$ docker run -p3000:3000 redmine:4.2.9-alpine -d

redmine が4.2.9でちょっと古めなのは小生の趣味である。

RDB image の起動タイミングに悩まされることもなく、実にスルッと起動する。
config/database.yaml を書き換える必要すらない。

この redmine:4.2.9-alpine の場合は、/usr/src/redmine/sqlite に redmine.db というファイルを作る。
加えて、添付ファイルは、/usr/src/redmine/files に保存される。
移行もしくはバックアップのためにも、ホストディレクトリを data volume mount しておいたほうがいいだろう。

このディレクトリには uid=99 でファイルが作られるので、パーミッションに注意されたし。

まとめるとこうなる

$ mkdir sqfile files
$ chmod a+rwx sqlite files
$ docker run -p3000:3000 -v$PWD/sqlite:/usr/src/redmine/sqlite -v$PWD/files:/usr/src/redmine/files -d redmine:4.2.9-alpine

SQLite ではデータのバックアップは非常に簡単である。
data volume mountしてる場合には、ホストから SQLite データファイルを直接参照できる。

redmine.dbをそのまま保存しても良いが、合わせてSQLダンプもあると移行する場合に便利だろう。

$ sqlite3 --readonly data/redmine.db .dump

標準出力に大量のsqlが出力されるので、これを適当なファイルに保存しておけばいい。

Discussion