はじめに
Laradockの標準のDockerfileだと上手く動かなかったので勉強がてらDockerfileをいじってみました。
詰まった原因
エラー
attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/410
どうやら設定ファイルを書き換える必要があるらしい。設定ファイルの場所はDockerコンテナの中の/etc/ImageMagick-6/policy.xml
。コンテナを起動するたびにvim
などで書き換えるのは面倒なのでDockerfileにあらかじめ処理を書いておくことにしました。
解決方法
使っているコンテナのDockerfile(自分の場合はphp-fpm
とworkspace
)を下記のように編集してください。
Dockerfile
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apt-get update && \
# ↑ここを追加
apt-get install -y libmagickwand-dev imagemagick && \
sed -i -e 's/domain="coder" rights="none"/domain="coder" rights="write|read"/g' /etc/ImageMagick-6/policy.xml && \
# ↑ここを追加
~ 以下略
使いたいコンテナの.env
も編集します。
.env
### WORKSPACE #############################################
~
PHP_FPM_INSTALL_IMAGEMAGICK=true
~
### PHP_FPM ###############################################
~
WORKSPACE_INSTALL_IMAGEMAGICK=true
Dockerをリビルド
docker-compose up --build -d nginx mysql redis
解説
apt-get update
パッケージ一覧の更新
sed -i -e ~
設定ファイルの書き換え。PDFの読み込み、書き込みを許可しています。