私はMongoDBバックエンドを持つシンプルなレールアプリを持っています。私はレールアプリとMongoDBを別のコンテナで実行するためにDocker Composeを使用しています。デフォルトのレールポート(3000)を使用すると、すべて正常に動作します。デフォルト以外のポートを使ってDockerコンテナにRailsアプリケーションを実行する
私はCMD ["rails", "s", "-p", "8080"]
を使用して代わりに、ポート8080でレールのアプリを実行し、私のDockerfile
でEXPOSE 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
8080:8080は、ローカルマシンの8080にコンテナの8080を公開するようにドッカーに指示しています。それを3000:8080に変更してみてください。その時点で、ホストマシンから3000にドッキングコンテナの8080を接続します。 – bkunzi01