Dockerを使ってPHP,nginx,MySQLの環境構築でwebサーバーとなるnginxのコンテナ作成をしていた時に
service "web" is not running container #1
というエラーに遭遇したので、その解決策を備忘録として残します。
やっていたこと
DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する
こちらの記事を参考に環境構築に取り組んでいました。
PHPのコンテナを立ち上げるところまでは順調でしたがnginxのコンテナを立ち上げるときにエラーに遭遇しました。
エラーログを確認
本来であればPHPのコンテナとnginxのコンテナどちらも立ち上がっていて欲しいのだがdocker-compose ps
コマンドで確認したところnginxのコンテナが立ち上がっていなかった。
もちろん、docker-compose exec web nginx -v
コマンドが機能するわけもなく、、
$ docker-compose up -d --build
// 略
$ docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker_handson-app-1 docker_handson-app "docker-php-entrypoi…" app
$ docker-compose exec web nginx -v
service "web" is not running container #1
こんな時はログを確認してみよう。
docker logs docker_handson-web-1
中略
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/03/05 19:34:05 [emerg] 1#1: unknown directive "//" in /etc/nginx/conf.d/default.conf:6
nginx: [emerg] unknown directive "//" in /etc/nginx/conf.d/default.conf:6
~/program/2024/docker_handson (main *)
ふむふむ、よくわからんがdefault.confファイルの//
の部分が怪しいと。
default.conf
server {
listen 80;
server_name example.com;
root /app/public; // 書き換え
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
略
コードを見るとコメントアウトの//
が悪さしてるかも??
と思い削除してみたら、案の定こいつでした。
$ docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker_handson-app-1 docker_handson-app "docker-php-entrypoi…" app 19 minutes ago Up 19 minutes 9000/tcp
docker_handson-web-1 docker_handson-web "/docker-entrypoint.…" web 10 seconds ago Up 9 seconds 0.0.0.0:8081->80/tcp
まとめ
原因がよくわからない時はログを確認しよう。