2016-07-03 3 views
4

は、実際にノードjsのための私のdockerfileを作成するために、私nodejsベースイメージ上で次のコマンドを使用します。私は実行する必要があるので、私はこの方法で満足していないドッカーベストプラクティスnodejsと静的ファイル

RUN \ 
    apt-get update && \ 
    apt-get install -y --no-install-recommends git python build-essential libpng-dev && \ 
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

# Install production package only 
COPY package.json /var/www/site 

RUN \ 
    npm install && \ 
    npm cache clean 

COPY . /var/www/site 

RUN \ 
    npm run build && \ 
    npm run doc 

RUN \ 
    npm prune --production && \ 
    npm cache clean 

ENV NODE_ENV=production 

をアプリケーションのクライアント部分を作成する "npm run build"(webpack、backbone、marionnetteに基づいています)。

私は "npm run build"コマンドを実行するので、私は開発パッケージだけでなく、イメージを最小化するためにいくつかのdebianパッケージをインストールする必要があります。

私は、イメージにはプロダクションパッケージのみが含まれていて、devのものは含まれないようにしたいと思います。

私がプロダクションファイルだけを置くと、ビルドマシンでクライアントコードを生成する必要があります。だから私はnodejsとすべての必要なパッケージをホストマシンにインストールする必要があります。私はドッカーですべてをビルドすることを勧めます。

2回目は、nodeginfoコンポーネントからではなく、nginxから直接静的ファイルを提供したいと思います。しかし、私はnginxイメージにノードをインストールしたくありません。

ドッカーの基本的な慣行は何ですか?ドロッカー内のすべてをビルドして、再現性のあるイメージを作成しますか?結果だけをドッキングしてホストとパッケージにビルドしますか?

おかげ

答えて

1

は、私は1つのビルドを使用することが困難であると画像はほとんどの場合、きれいではありませんので、最善の方法は、2つの手順を使用することだと思います。

最初のconatinerはボリューム内のソースを持ち、マシン(またはCI)に静的ファイルを作成します。あなたは他のものをインストールする必要はなく、再現性があります。

次に、静的ファイルを使用してnginxイメージを作成できます。

たとえば、 1つの短いコマンドを入力すればよいので、メイクファイルです。

関連する問題