私は現在、Dockerを使って2つのサービスを含むローカル開発環境を簡単にしようとしていますが、ホストとコンテナのポートを正しい方法で使用するのには苦労しています。複数のローカルサービスにlocalhostポートを公開する
- 一つのレポは、RailsのAPIを含む127.0.0.1:3000上で実行されている同型が127.0.0.1上で実行して、/ Reduxのフロントエンドアプリに反応含む
- 一つレポ(この
backend
を呼び出すことができます):ここでは状況があります: 8080(これをfrontend
と呼ぶことができます) - 両方とも、独自のDockerfileとdocker-compose.ymlファイルが別々のreposにあるので、両方とも
docker-compose up
で始まります。 - 現在、CIまたはデプロイメントのためにDockerを使用しておらず、今後予定しています。
私がいる問題は、地域の発展にfrontend
アプリはありませんfrontend
コンテナ内から127.0.0.1:3000のAPIのバックエンドを探しているということである - それはホストにのみ利用可能です実際にRailsアプリケーションを実行しているコンテナbackend
があります。
backend
コンテナの3000ポートをフロントエンドコンテナに転送することはできますか。あるいは、少なくともホストの3000ポートで、私のコンピュータ上のlocalhostにRailsアプリケーションが見えるようになります。私はのfrontend
ドッカーを作成しようとしましたが、Railsアプリケーションの実行中にそのポートが使用中で接続に失敗しているため、実行できません。おそらく私はその点を誤解しているか、何か明白なものがないと思っていますか?
ファイル:
frontend
Dockerfile
FROM node:8.7.0
RUN npm install --global --silent webpack yarn
RUN mkdir /app
WORKDIR /app
COPY package.json /app/package.json
COPY yarn.lock /app/yarn.lock
RUN yarn install
COPY . /app
frontend
ドッキングウィンドウ-compose.yml
version: '3'
services:
web:
build: .
command: yarn start:dev
volumes:
- .:/app
ports:
- '8080:8080'
- '127.0.0.1:3000:3000' # rails backend exposed to localhost within container
backend
Dockerfile
FROM ruby:2.4.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
backend
ドッキングウィンドウ-compose.yml
version: '3'
volumes:
postgres-data:
driver: local
services:
postgres:
image: postgres:9.6
volumes:
- postgres-data:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- '3000:3000'
depends_on:
- postgres
は、それがこのよう 'ドッキングウィンドウ-構成-fドッキングウィンドウ-compose.yml -fを行っていますdocker-compose.prod.yml up -d' –
返信いただきありがとうございます!私は上記を試しましたが、 'frontend_webnet'と' backend_webnet'という2つのネットワークを作成しました。何らかのエイリアスを使用する必要がありますか?またはおそらく外部リンクですか? – redroot
上記のように、両方のコマンドを1つのコマンドで起動してみましたか? –