Redmineをdockerに構築後、使用中に引っ掛かった事について覚書。
構築時の記事
marusho1266.com
Redmineでユーザを作成しようとしたところ、以下のエラーが発生した。

色々調べた結果、ユーザ名に日本語を利用していることが原因のようだった。
日本語を使わないことは正直出来ないので、何とか対応する方向に。
結論としては、コンテナの設定を変えることで対応が出来そう。
以下対応内容。
- コンテナの停止
まずは念のためコンテナを停止する。

- docker-compose.ymlの修正
ymlの各serviceに以下の追記を行う。
# 以下の環境変数を追加
RAILS_ENV: production
REDMINE_DB_ENCODING: utf8
# 以下の環境変数を追加
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ciVolumes
volumes redmine_plugins:
※yml全文は記事の最後に記載
- コンテナの再作成
ymlを修正した状態でコマンドプロンプトから以下を実行。
docker-compose up -d
これで上手くいくはずなのだが、日本語を含んで登録しても変わらずInternal errorが発生する。
以下のコマンドでコンテナを削除してから作成してもダメ。
docker rm [コンテナID]
色々とハマった結果、一番最初にコンテナを作成した時に、データ永続化を行っているので、コンテナを削除してもMySQLのデータは残っている状態になっている事が原因のよう。
このせいでymlを更新しても日本語の登録が出来ないと思われる。
※本来はデータが保持されている方が正しい。
完全に消すには、作成されたボリュームを指定して削除する必要があるので、以下のコマンドでボリュームを削除する。
docker volume rm [ボリューム名]
その前に、以下のコマンドで作成されているボリュームを確認
docker volume ls

![]()
こんな感じで3つのvolumeをすべて削除。
この状態で、再度コンテナを作成し、ユーザ登録をしてみる。

無事登録完了。
- 修正後のdocker-compose.yml全文
version: '3'
services:
redmine:
image: redmine:latest
ports:
- "3000:3000"
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: password
REDMINE_SECRET_KEY_BASE: supersecretkey
# 以下の環境変数を追加
RAILS_ENV: production
REDMINE_DB_ENCODING: utf8
depends_on:
- db
volumes:
- redmine_files:/usr/src/redmine/files
- redmine_plugins:/usr/src/redmine/plugins
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: redmine
# 以下の環境変数を追加
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
redmine_files:
redmine_plugins: