2017-08-13 19 views
1

私はこれをlong-term cachingについて読んでプロジェクトに実装しようとしましたが、ドッカーコンテナでビルドしようとしているときにマニフェストファイルがアセットに間違ったリンクを生成します。ドッキングコンテナにNodeJS webpackを構築する

Dockerfile.web

FROM node:8.2.1-alpine 

WORKDIR /web 

ADD /tmp/app.tar.gz /web 

# At the end node_modules will be removed because of bug with npm prune. 
# In this case we need re-install production-only deps to reduce container weight. 
RUN yarn install && \ 
yarn run build-production && \ 
rm -rf node_modules && \ 
yarn install --production && \ 
rm -rf src 

RUN adduser -D mySecretUser 
USER mySecretUser 

ドッキングウィンドウコンテナ内の建物が異なっている理由を誰もが、それができるか知っていますか?

私は、すべての画像を削除するドッキングウィンドウコンテナのキャッシングをオフに、世代前distディレクトリを削除しようとした - ではない作品。

+0

どのように異なったものが期待されたものを表示し、私たちが可視化するために生成されたものを表示するか詳細 –

+0

ありがとうTarun!ドッカーの作成スクリプトで問題が見つかりました。私は以下のコメントに答えを書くつもりです –

答えて

0

この問題は、ドッカー製作を使用している私のビルディングスクリプトによってもたらされたことがわかりました。

version: '3' 
services: 

    # Web-server which is responsible for server-side rendering. 
    # It also add additional middleware layers when proxify requests 
    # for dependent systems such as API (for example enrich with auth data before sending). 
    web: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile.web 
    ports: 
     - "${WEBSERVER_PORT}" 
    env_file: 
     - ./docker/web.env 
    volumes: 
     - assets:/web/dist/assets 
    command: ["yarn", "run", "_production"] 

    # Nginx used as proxy-wrapper which is placed before web-server. 
    # It's resposible for static files and proxy to web-server. 
    # It also can be used for proxify websocket connection to specific game server. 
    nginx: 
    build: 
     context: . 
     dockerfile: ./docker/Dockerfile.nginx 
    volumes: 
     - assets:/www/assets 
    ports: 
     - "80:${NGINX_PORT}" 
    env_file: 
     - ./docker/web.env 
     - ./nginx/nginx.env 
    depends_on: 
     - web 
    command: ["/bin/sh", "-c", "envsubst </etc/nginx/templates/default.template> /etc/nginx/sites-enabled/default && nginx -g 'daemon off;'"] 

volumes: 
    assets: 

あり

ドッカー-compose.yml私は共有ボリュームassetsを使用していたし、スタートが再びドッキングウィンドウ-構成するとき、私はそれを明確にしませんでした。

私が構築するために、このコマンドを使用している:私は私のプロジェクトをビルドするためにdocker-compose.ymlを使用し、その後、環境変数を設定すると、ソースとtar.gz形式を準備している
rm -rf tmp && mkdir -p tmp && tar -czvf tmp/app.tar.gz src config .babelrc mq.json postcss.config.js webpack.*.js package.json yarn.lock && export $(cat ./docker/web.env | grep -v ^# | xargs) && docker-compose -p cruiserwars build
。しかし、そこに私は前に作成されたボリュームを...削除するのを忘れ

だから、解決策ではなく、このコマンドを持つことになります。
rm -rf tmp && mkdir -p tmp && tar -czvf tmp/app.tar.gz src config .babelrc mq.json postcss.config.js webpack.*.js package.json yarn.lock && export $(cat ./docker/web.env | grep -v ^# | xargs) && docker-compose down -v && docker-compose -p cruiserwars build

あなたは私はdocker-compose down -vに追加されていることがわかりますがコンテナを停止し、以前に作成されたボリュームを削除します。

関連する問題