Help us understand the problem. What is going on with this article?

docker-compose up -dをしたら Cannot start service (xxx): driver failed programming external connectivity on endpoint (xxx) というエラーが出てnginxが起動しない時の対処法

More than 1 year has passed since last update.

新規プロジェクトの開発にあたりdockerで環境構築する際にdocker-compose up -dをしたら下記エラーが出てnginxが立ち上がりませんでした。

WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating redis ... done
Creating mysql ... done
Creating app   ... done
Creating nginx ... error
ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx 
(xxxxx): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)

エラーの原因はエラーメッセージの通りで、port80ですでにコンテナが起動しているからです。

Macでは、デフォルトでApacheが入っていてそれがPort80で立ち上がってるらしく、それを止めることで解決します。

$ sudo lsof -i -P | grep "LISTEN"

私の場合は下記のように出ました。

Password:
httpd        99           root    4u  IPv6 0x4405ecbd1691af79      0t0    TCP *:80 (LISTEN)
cupsd       244           root    7u  IPv6 0x4405ecbd1691a9b9      0t0    TCP *:631 (LISTEN)
cupsd       244           root    8u  IPv4 0x4405ecbd143300b9      0t0    TCP *:631 (LISTEN)
httpd       340           _www    4u  IPv6 0x4405ecbd1691af79      0t0    TCP *:80 (LISTEN)
Sketch      364           RURI    6u  IPv4 0x4405ecbd14331d39      0t0    TCP *:49155 (LISTEN)
Sketch      364           RURI   18u  IPv6 0x4405ecbd1691a3f9      0t0    TCP *:49155 (LISTEN)
plugin_ho   612           RURI   36u  IPv4 0x4405ecbd2004e6b9      0t0    TCP localhost:54000 (LISTEN)
Adobe\x20   953           RURI   12u  IPv4 0x4405ecbd2412c6b9      0t0    TCP localhost:15292 (LISTEN)
node      70724           RURI   23u  IPv6 0x4405ecbd31e3b2b9      0t0    TCP *:8081 (LISTEN)
Dropbox   71694           RURI  130u  IPv6 0x4405ecbd3045baf9      0t0    TCP *:17500 (LISTEN)
Dropbox   71694           RURI  132u  IPv4 0x4405ecbd32fa7a39      0t0    TCP *:17500 (LISTEN)
Dropbox   71694           RURI  162u  IPv4 0x4405ecbd32d7ea39      0t0    TCP localhost:17600 (LISTEN)
Dropbox   71694           RURI  166u  IPv4 0x4405ecbd32cf10b9      0t0    TCP localhost:17603 (LISTEN)
com.docke 74463           RURI   18u  IPv4 0x4405ecbd2fc140b9      0t0    TCP *:16379 (LISTEN)
com.docke 74463           RURI   20u  IPv4 0x4405ecbd33662a39      0t0    TCP *:8080 (LISTEN)
com.docke 74463           RURI   21u  IPv6 0x4405ecbd3045c0b9      0t0    TCP localhost:8080 (LISTEN)
com.docke 74463           RURI   24u  IPv6 0x4405ecbd1691c0b9      0t0    TCP localhost:16379 (LISTEN)
com.docke 74463           RURI   25u  IPv4 0x4405ecbd336b06b9      0t0    TCP *:3306 (LISTEN)
com.docke 74463           RURI   26u  IPv6 0x4405ecbd1691b539      0t0    TCP localhost:3306 (LISTEN)

httpdがport80を使ってしまっているので、Macで起動しているApacheを止めましょう。

$ sudo apachectl stop

これで再度
docker-compose up -dをしたらnginxが起動しました。

redis is up-to-date
mysql is up-to-date
app is up-to-date
Starting nginx ... done
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away