2016-08-04 20 views
1

問題が発生しました。私はドッカーの専門家には明らかですが、私は迷っています。実行時にDocker Webpackコンパイル済みファイルが見つかりません

は私のdockerfileです。ここにはいくつかの "ls"が追加されており、webpackが生成しているファイルを確認できます。

最初の "ls" が正しく

Step 8 : RUN ls server/public 
---> Running in 67bc7ee5f832 
bundle.css 
bundle.js 
index.html 

を示しているが、第2 lsが

web_1 | index.html 

Dockerfileではありません。

FROM node:6.2 

# Create app directory 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app/ 

RUN npm i 

COPY . /usr/src/app/ 

# Build Static Resources 
RUN npm run build 

# ls here shows correct files 
RUN ls server/public 

# Bundle app source 

ENV NODE_ENV=production 

# ls here doesn't show compiled files 
CMD ls server/public && npm start 

EXPOSE 3000 

私は何をしないのですか? nodejsの実行後にbundle.css/jsがブラウザに表示されないのはなぜですか?

ディレクトリが正しくコピーされていることを確認するにはどうすればよいですか?

おかげ

答えて

1

RUNは、あなたのイメージのdocker build時に実行されるステップを定義します。

CMDは、コンテナdocker runが実行されたときに実行されるデフォルトコマンド(または定義されている場合はENTRYPOINTに渡される引数)を定義します。

Dockerもレイヤーをキャッシュするので、別のビルドを実行すると、Dockerが同じ前のレイヤーのハッシュでこの正確なコマンドの結果イメージを見つけた場合、RUN lsはスキップされます。

あなたのコンテナ内部を見るために、あなたはそれを閲覧するシェルを実行することができます。

docker run -it --rm your_image_name /bin/bash

あなたが/bin/bashを渡すので、デフォルトCMDがバイパスされ、唯一のシェルが起動されます。

+0

私の問題は、私のリポジトリをリモートサーバにプルしようとしていたことです。そこに画像を構築してから、 "docker-compose up"を使っていましたが、それはまだ理解できませんでした。 代わりに画像をローカルに構築し、ドッカーハブにアップロードしてリモートサーバーでプルして個別に実行し、期待通りに動作します – Lucas

+1

これを振り返ってみると、ボリュームマウントが行われていると思います作成ファイルそのファイルがなければ、これは単なる推測です。 @Nachiket、あなたのファイルで新しい質問を開いてください、コメントはq&aのための良い場所ではありません。 – BMitch

関連する問題