2017-05-01 13 views
1

ノードjsアプリケーションコードをドッカーコンテナ内にリロードしようとしました。プロセスマネージャーとしてpm2を使用します。ここに私の設定です: Dockerfileドッカーコンテナ内のコードを再読み込みします。 PM2。ノードjs

FROM node:6.9.5 

LABEL maintainer "[email protected]" 

RUN mkdir -p /usr/src/koa2-app 

COPY . /usr/src/koa2-app 

WORKDIR /usr/src/koa2-app 

RUN npm i -g pm2 

RUN npm install 

EXPOSE 9000 

CMD [ "npm", "run", "production"] 

ecosystem.prod.config.json(別名PM2設定)

{ 
    "apps" : [ 
    { 
     "name"  : "koa2-fp", 
     "script"  : "./bin/www.js", 
     "watch"  : true, 
     "merge_logs" : true, 
     "log_date_format": "YYYY-MM-DD HH:mm Z", 
     "env": { 
     "NODE_ENV": "production", 
     "PROTOCOL": "http", 
     "APP_PORT": 3000 
     }, 
     "instances": 4, 
     "exec_mode" : "cluster_mode", 
     "autorestart": true 
    } 
    ] 
} 

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

version: "3" 
services: 
    web: 
    build: . 
    volumes: 
     - ./:/koa2-app 
    ports: 
     - "3000:3000" 

npm run 3000: - 生産 は私がローカルホスト上の私のアプリと対話することができるよ、私はCLIで「アップドッキングウィンドウ-作曲」を実行し、それが動作--attach ecosystem.prod.config.json

を開始PM2。しかし、いくつかのコードを変更すると、Webには表示されません。ドッカー内でコードの再読み込みを設定するにはどうすればよいですか?

P.S.ベストプラクティスの質問:ドッカーを使って開発することは本当にOKですか?または、ドッキング用の容器が生産用に最も好ましい。

+0

ファイルがコンテナに更新されていることを確認しましたか?ここには2つの問題が考えられます。 Dockerがファイルを正しく更新しないか、サーバーが変更を検出しません。 'docker-compose exec web sh'を使ってシェルを取得し、ファイルが適切に修正されていることを確認することができます。 – kichik

+0

チェック。ドッカーコンテナ内のファイルは更新されません。 –

答えて

1

COPYあなたのコードは1か所にあり、ボリュームは別の場所にあるようです。

試してみてください。そして、

version: "3" 
services: 
    web: 
    build: . 
    volumes: 
     - ./:/usr/src/koa2-app 
    ports: 
     - "3000:3000" 

、あなたがコンテナ(あなたのIDE)外のjsのコードを変更、今PM2は、変更を確認するため、アプリケーションを再ロードすることができます(あなたが確認する必要がありますその部分)。

開発環境でのDockerの使用に関しては、多くの理由からDockerを使用することは本当に良いことです。たとえば、さまざまな環境で同じアプリのインストールを管理して、多くのバグなどを減らすことができます。

+1

それは私のために働いた。ベストプラクティスの質問回答にも感謝します! –

関連する問題