📑

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

2022/12/06に公開約1,300字

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

しかしそれらをわざわざ用意するのも手間だ。docker-composeで専用を立てるのもありだが、バックアップが面倒臭い。もちろんこれらは小生の趣味である :)

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

DBはどうするのか? 実はsqliteドライバで起動する。

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

Docker Hub

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 に 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 というファイルを作るので、ホストディレクトリを data volume mount しておいたほうがいいだろう。

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

まとめるとこうなる

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

SQLite ではデータのバックアップは非常に簡単である。
data volume mountしてる場合には、ホストから次の通りである。

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

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

Discussion

ログインするとコメントできます