LoginSignup
7
3

More than 1 year has passed since last update.

docker-composeのportsの設定が反映されない

Posted at

0. 前提

  • サーバ等全く起動させずコンテナを実行する。

1.現象

  • docker-composeにportsを指定しているが、ホスト側から指定したポートにアクセスできない。
  • docker-composeと起動コマンドは以下。
docker-compose.yml
version: '3'

services:
  app:
    build:
      context: docker 
      dockerfile: Dockerfile
    ports:
      - 80:80
  • コンテナを実行し、bashを使えるようにする。
run
docker-comopse run app bash
  • docker-compose psでポートのフォワード状態をみるが、フォワードされていない。
docker-compose ps

                      Name                        Command   State                 Ports
----------------------------------------------------------------------------------------------------
コンテナ名   bash      Up       80/tcp

2.原因

  • 「docker-compose run」で実行すると、docker-compose.yml内のportsの設定は反映されない。

3-1.対応(1):-pオプションを付けて実行。

  • 「-p」オプションをつけることでportの開放とフォワードができる。
  • この場合、portsの設定は不要。
docker-compose run -p 80:80 app bash
  • ポートの状態を確認。
docker-compose ps

                      Name                        Command   State                 Ports
----------------------------------------------------------------------------------------------------
コンテナ名  bash      Up        0.0.0.0:80->80/tcp,:::80->80/tcp

3-2.対応(2):「tty:true」を設定し、「up」コマンドで起動状態を維持。

docker-compose.yml
version: '3'

services:
  app:
    build:
      context: docker 
      dockerfile: Dockerfile
    ports:
      - 80:80
    tty: true
  • コンテナを実行し起動状態を維持。
run
docker-compose up
  • ポートの状態を確認。
docker-compose ps

                      Name                        Command   State                 Ports
----------------------------------------------------------------------------------------------------
コンテナ名  bash      Up        0.0.0.0:80->80/tcp,:::80->80/tcp

  • 「tty」については、以下の記事で詳しく説明されており、参考になります。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3