2017-06-15 7 views
0

私はMongoDBバックエンドを持つシンプルなレールアプリを持っています。私はレールアプリとMongoDBを別のコンテナで実行するためにDocker Composeを使用しています。デフォルトのレールポート(3000)を使用すると、すべて正常に動作します。デフォルト以外のポートを使ってDockerコンテナにRailsアプリケーションを実行する

私はCMD ["rails", "s", "-p", "8080"]を使用して代わりに、ポート8080でレールのアプリを実行し、私のDockerfileEXPOSE 8080を使用してポート8080を公開する場合は、そのイメージを再構築し、押して、唯一のMongoDBコンテナが起動します。 docker-compose.ymlのポートを8080:8080に変更します。

Dockerなしのレールアプリをポート8080(rails s -p 8080)で実行すると問題なく動作します。

ポート8080を使用しているときに私のレールアプリがDockerコンテナで動作しないのはなぜですか?ポート3000を使用しているときに動作します。

Dockerfile

FROM ruby:2.3.1 

EXPOSE 3000 

ADD . /code 
WORKDIR /code 
RUN bundle install 

CMD ["rails", "s"] 

ドッキングウィンドウ-compose.yml

version: '3' 
services: 
    web: 
    image: "<USERNAME>/<REPO>:<TAG_NAME>" 
    build: . 
    ports: 
     - "3000:3000" 
    volumes: 
     - .:/code 
    links: 
     - mongodb 
    environment: 
     - RAILS_ENV=development 
    mongodb: 
    image: "mongo:latest" 
    ports: 
    - "27017:27017" 
    volumes: 
     - .:/data 
    restart: always 
+0

8080:8080は、ローカルマシンの8080にコンテナの8080を公開するようにドッカーに指示しています。それを3000:8080に変更してみてください。その時点で、ホストマシンから3000にドッキングコンテナの8080を接続します。 – bkunzi01

答えて

1

8080:8080は、ローカルマシン上の8080にコンテナに8080を公開するためにドッキングウィンドウを語っています。それを8080:3000に変更してみてください。その時点でホストマシンから3000をドッキングコンテナの8080に接続します。詳細情報:https://www.ctl.io/developers/blog/post/docker-networking-rules/

+0

私はポートが後方にあると思います。私は 'docker-compose.yml'のポートを' 8080:3000'に変更しようとしましたが、すべて動作します。あなたの答えでこれを変えることができますか?私は同意しますか? – grizzthedj

+0

申し訳ありませんが、電話から投稿していた!乾杯。 – bkunzi01

+1

心配はありません - 迅速な回答ありがとう! – grizzthedj

関連する問題