2017-10-20 14 views
0

Dockerコンテナ内でコンテナを使用してコードをコンパイルして実行し、コード自体がホストコンピュータにある(つまり私のローカルマシン)。イメージを作成して実行していますが、接続できません。ホストマシンからDockerコンテナでホストされているエクスプレスサーバに接続できません

マイdockerfile:

# Dockerfile (tag: v3) 
FROM node:latest 

WORKDIR /tmp 
COPY package.json /tmp/ 
RUN npm config set registry http://registry.npmjs.org/ && npm i 

WORKDIR /usr/src/app 
COPY . /usr/src/app/ 
RUN cp -a /tmp/node_modules /usr/src/app/ && npm run dll 

ENV NODE_ENV=production 
ENV PORT=4000 
EXPOSE 4000 

そして、私のドッキングウィンドウ-コンファイル:この設定で

# docker-compose.yml (tag: v4) 
web: 
    build: . 
    ports: 
    - "4000:4000" 
    volumes: 
    - .:/usr/src/app/:rw 
    environment: 
    - NODE_ENV=development 
    command: > 
    sh -c ' 
    if test -d node_modules; 
    then 
     echo node_modules_exists ; 
    else 
     cp -a /tmp/node_modules /usr/src/app/website; 
    fi && 
    npm i && 
    npm start 
    ' 

、私はlocalhost:4000に接続できるように期待したいです。私のエクスプレスアプリがポート4000でリッスンしているコンテナからのコンソール出力。docker inspectでチェックすると、コンテナのIPアドレスである172.17.0.2:4000で試してみました。

接続には他にどのような手順が必要ですか?私はLinuxのコンテナを使ってWindows 10とDocker 17.09.0-ce-win33(13620)を実行しています。

答えて

0

これらの行をdocker fileから削除してビルドして実行してください。

ENV NODE_ENV=production 
ENV PORT=4000 

これはlocalhostをヒットするあなたを有効にした場合:4000を使用すると、最初の生産環境は、ポート4000に公開している画像を構築したときにドッキングウィンドウ・コンファイルを実行すると、その理由は、あなたが再び指定されていることを開発としてのenv。両方ともポート4000に公開しようとしているので、失敗します。

関連する問題