Docker上のRedmineで日本語を登録しようとするとInternal errorが出るとき

Docker環境で動かしているRedmineで日本語の何かしらを入力するとInternal errorが発生して少しハマったのでメモしておきます。

TL;DR

command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ciをdbコンテナに付与してやれば良いが、既存のものに追加しても起動に失敗したのでvolumeも破棄して再構築した。

詳細

日本語のプロジェクトやチケット、ロールなどなどを登録しようとするとInternal errorが発生したので、日本語も許容できるように変更しようとしました。

調べたところmy.cnfを編集するか、mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ciを実行してやることで対応できます。

が、既存のstorage volumeをマウントしているDBコンテナに適用できず、初期化再構築すると上手く動きました。

最終的なdocker-compose.yml

version: '2'

services:
  redmine:
    image: redmine
    ports:
      - 4444:3000
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: password
    depends_on:
      - db
    restart: always

  db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: redmine
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes_from:
      - datastore
    restart: always

  datastore:
    image: busybox
    volumes:
      - redmine-data:/var/lib/mysql

volumes:
  redmine-data:
    driver: local