docker + apache環境で「No MPM loaded」が出た時の対処

2023/07/18に公開

事象

apacheを使って実験をしたかったので、dockerで構築しようとしたところ、コンテナログで下記のエラーが出てコンテナがすぐ終了してしまった。

AH00534: httpd: Configuration error: No MPM loaded.

構成

httpd.confをカスタマイズし、それをコンテナの中にコピーして適用したかった。
/
┣ docker-compose.yaml
┣ dockerfile
┣ httpd.conf
┗ public-html/
  ┗ index.html

各ファイルの中身

docker-compose.yaml

version: '3'

services:
  web:
    container_name: web
    tty: true
    build: .
    ports:
      - 8000:80
    volumes:
      - ./public-html/:/usr/local/apache2/htdocs/

dockerfile

FROM httpd:2.4
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf

上記以外のファイルに関しては今回の問題に関係ないため省略。

原因

コンテナの中からhttpd.confを持ってきて保存した時に、文字コード「UTF16LE」で保存されていてapacheからうまく読み込めていなかった。
Windowsで作業していたため、そうなったのかもしれない。
ちなみに直接原因ではないが、改行コードもCRLFになっていた。

対処

文字コードをUTF8に変更することで解決。
ついでにLinuxなので改行コードもLFにした。
VSCodeが手っ取り早いのでVSCodeを使って変更しました。

Discussion