Docker容器中的NodeJS webpack构build

我阅读了关于长期caching的内容,并试图在我的项目中实现这一点,但是当我试图在Docker容器中构build它时,清单文件会生成错误的资源链接,但是生成过程却很顺利。

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 

任何人都知道它是什么,为什么在docker集装箱的build筑是不同的?

我试图删除所有图像,closuresdocker容器caching,生成之前删除dist目录 – 不起作用。

我发现这个问题是由我的使用docker-compose的构build脚本引入的。

泊坞窗,compose.yml

 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: 

在那里,我已经使用了共享卷assets并且在再次启动docker-compose时我没有清除它。

我使用这个命令来构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 -p cruiserwars build
在那里我已经准备好tar.gz源码,设置环境variables,然后使用docker-compose.yml来构build我的项目。 但是,我忘了删除之前创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来停止容器并删除之前创build的卷。