75621


Docker上にあるRails環境をAzureでデプロイしたいと考えており、チュートリアルをやっていますが、以下の部分で躓いているので教えていただきたいです。

[カスタム コンテナーを使用してカスタム ソフトウェアを Azure App Service
に移行する](https://docs.microsoft.com/ja-jp/azure/app-service/tutorial-custom-
container?pivots=container-linux)

### 行ったこと

  1. イメージをビルドする
[code]     docker build --tag appsvc-tutorial-custom-image .

    
[/code]

  2. Docker コンテナーをローカルで実行して、ビルドの動作をテストします。
[code]     docker run -p 8000:8000 appsvc-tutorial-custom-image

    
[/code]

この2番でlocalhostにアクセスしているのですが、応答がありません。

私がimageを作成したのはDockerのクイックスタートを参考にしたもので[こちら](https://github.com/jinwatanabe/rails_works/tree/19e15e189d0401ba374a41019e3c7546eb294566)となります。

localhost:3000にアクセスするとYou're on railsとなるだけの環境構築しただけになります。

2番は

[code]

    docker run -p 3000:3000 appsvc-tutorial-custom-image
    
[/code]

と変更しました。(3000番のポートにdocker-compose.ymlで設定しているため)

[code]

    Switch to inspect mode.
    
[/code]

と返答があり、localhost:3000にアクセスしても **このサイトはアクセスできません** となります。

どのようにすればイメージから、localhost:3000にアクセスできるようになるのでしょうか。  
また、imageを作成するのはDockerfileから作るものだからできないのかもしれないとも考えましたが、どうなのでしょうか。

`docker run`を利用してimageから起動する方法を教えてほしいです。


CC BY-SA 4.0
2021-05-01T12:08:38.917
75619
2021-05-02T04:09:09.507
2021-05-02T04:09:09.507
3060
44467
question
ruby-on-rails docker
docker run で起動しても localhost にアクセスできない: Switch to inspect mode


[現在の
Dockerfile](https://github.com/jinwatanabe/rails_works/blob/19e15e189d0401ba374a41019e3c7546eb294566/Dockerfile)
では CMD が指定されていません。このため指定無しで `docker run` した場合、FROM で指定されている ruby:2.5.3 の CMD
である `irb` が起動しています。

`docker-compose up` で起動した場合は [docker-compose.yml
で指定したコマンド](https://github.com/jinwatanabe/rails_works/blob/19e15e189d0401ba374a41019e3c7546eb294566/docker-
compose.yml#L15)である `rails s -p 3000 -b '0.0.0.0'` が実行されているため、3000 番ポートで Rails
が待ち受けてくれています。一方で今回作った Docker イメージでは単に `docker run` するだけだと `irb` が起動するだけなので
Rails が起動していません。

このことを手元で試すには、たとえばコマンド引数で CMD を指定する `docker run -p 3000:3000 appsvc-tutorial-
custom-image rails s -p 3000 -b '0.0.0.0'` を実行すると良いです。この場合は `localhost:3000` で
Rails へアクセスできます。ただし DB コンテナが起動しておらず DB へのアクセスに失敗するのでエラー画面が表示されるはずです。

単に `docker run -p 3000:3000` しただけで動くようにしたければ、Dockerfile で CMD を指定すると良いでしょう。


CC BY-SA 4.0
2021-05-01T15:44:43.903
75621
2021-05-02T01:37:32.400
2021-05-02T01:37:32.400
19110
19110
75619
answer