概要
apache guacamoleを試しにセットアップしてみたところ、LinuxのDockerでは上手くいったがDocker for Windowsでは2つ引っかかったところがあった。その内容をメモる。
.sqlファイルの文字コード
手順の中で、次のようにguacamoleからsqlファイルを出力して、それをMySQLへインポートするところがある。
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
これをdocker-entrypoint-initdb.dを利用してMySQLコンテナ立ち上げ時にインポートさせたところで、次のエラーが出た。
2021-12-29 02:20:23+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/initdb.sql ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: '��-'.
調べたところ、MySQLが要求するのはUTF-8のファイルのようなのだが、WindowsのPowerShell経由で出力したファイルはUTF-16LEになっていた。
ファイルの文字コードをUTF-8に変換してからインポートさせることで、解決した。
.sqlファイルのアクセスエラー
続けて同じ手順で次のエラーが出た。
2021-12-29 05:23:57+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/initdb.sql mbind: Operation not permitted
とりあえず実験用として早く動かす必要があったので、次のサイトの情報をそのままパクらせてもらった。
bmf-tech - DockerのOperation not permittedというエラー に対応する
具体的には、docker-compose.ymlのうちMySQLのコンテナを定義する部分に、次の記載を追加した。
security_opt: - seccomp:unconfined
結果
以上2つの処置をしたところで、LinuxのDockerと同様に無事apache guacamoleを起動することができた。