2017-09-09 3 views
1

質問: 新しいパッケージをインストールして、開発者とのやりとりを行わずに変更、インストール、再実行を認識できるようにするにはどうすればよいですか?イメージやコンテナを変更しないでnockパッケージをドッキング画像に追加するにはどうすればいいですか?

package.json

docker build . -t testImage 
:我々は唯一の1パッケージ

"scripts": { 
    "start": "node_modules/.bin/nodemon" 
}, 
"dependencies": { 
    "express": "4.15.4" 
} 

FROM node:8.4.0 ENV HOME /var/www WORKDIR ${HOME} COPY server/package.json server/tsconfig.json server/nodemon.json $HOME/ RUN npm install EXPOSE 8191 CMD [ "npm", "start" ] 

dockerfileメイクの画像
を持っていることを 予告

ランコンテナ:。

docker run -p 8191:8191 -v $(pwd)/server/src:/var/www/src testImage 

すべてが意図[nodemon] startingノードとして動作します/ SRC/index.js`

問題:

npm install cors --saveはCORSパッケージ

が追加されます
"scripts": { 
    "start": "node_modules/.bin/nodemon" 
}, 
"dependencies": { 
    "express": "4.15.4", 
    "cors": "^2.8.4", 
} 

問題は何も私のドッキングウィンドウコンテナに更新されませんです:( 私は、開発者が画像をリメイクしたり、コンテナを再実行する必要がする必要がありますする必要はありません: docker build . -t testImage docker run -p 8191:8191 -v $(pwd)/server/src:/var/www/src testImage

+0

「docker exec npm install cors --save'はどうすればよいですか? –

+0

これには解決策がありますか?親切に共有してください – Developer

答えて

0

見てどのようENTRYPOINTを取ると、 CMDが機能するため、生産と開発に同じDockerfileを使用する場合は、引数が指定されていない場合は本番モード、開発の場合は開発モードとして実行するエントリポイントスクリプトを作成できます。

開発パッケージを--save-devで保存します。開発モードで実行している場合、コンテナは開発者の依存関係をインストールします。

あなたnode_modulesがあなたの.dockerignoreであることを確認し、

あなたdockerfile:

FROM node:8.4.0 


ENV HOME /var/www 
WORKDIR ${HOME} 

COPY start_scrip.sh /start_scrip.sh 

COPY server/package.json server/tsconfig.json server/nodemon.json $HOME/ 
RUN npm install 
EXPOSE 8191 
ENTRYPOINT ["/start_scrip.sh"] 

start_scrip.sh例:

#!/usr/bin/env bash 


function development { 
    npm install --dev # 
    npm start 
} 
function run_prod { 
    #npm start command here 
} 


if [ $# -gt 0 ] 
then 
    if [ $1 == "development" ] 
    then 
     development 
    else 
     echo "Not a valid argument" 
     exit 127 
    fi 
else 
    run_prod 
fi 


exit 0 

が+ Xスクリプトchmodのようにしてください、コンテナ内で実行することができます。

は、開発モードで実行するには、次の

run -p 8191:8191 -v $(pwd)/server/src:/var/www/src testImage development 

たびに、あなたの開発者は、彼がコンテナを再起動する必要があるワークステーションに新しいパッケージを追加します。

関連する問題