という問題に直面しました。

下記のようなエラーです。

1
2
ERROR: for nginx  Cannot start service nginx: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"nginx\\\": executable file not found in $PATH\"\n"
ERROR: Encountered errors while bringing up the project.

書いていたdocker-compose.ymlは以下のようなものです。

1
2
3
4
5
6
7
8
9
10
11
12
version: '2'
services:
nginx:
build: ./nginx
volumes:
- ./logs/nginx/:/var/log/nginx/
- ./nginx/config/nginx.conf:/etc/nginx/nginx.conf
hostname: nginx
ports:
- "80:80"
- "443:443"
command: ["nginx", "-g", "daemon off;"]

上記のdocker-compose.ymlですが、内容的には1つのnginxコンテナだけなのでdocker-compose使う意味があるのかといわれそうですが、単体のDockerfileだと変更都度ビルドするのが手間なのでビルドやらずに変更できるならそっちのほうが望ましいかなと。あとは、volumeのマウントする際に常に長ったらしいコマンドを打たなくていいとか。そういう理由で今回はDocker composeを使うことにしました。

で、話がそれてしまったのですが…エラーを見ると…

1
executable file not found in $PATH\"\n"

パスがどうのこうの言われているのでvolumesのキーのパスがおかしいのかと思ったのですが、そうではなかったです。

調べたらIssueが上がっていました。この中にdocker-compose.yml内にcommandキーがあるとアカンというのに気付いたという投稿がある。
これをもとにdocker-compose.ymlcommandを削除すると無事起動しました。

個人的にはcommanddocker-compose.yml側から指定したいのですが、どうなるんでしょうか。前述のIssueはクローズになってしまってますし…