/ / NodeJS budova webpack v dokovacej nádobe - node.js, caching, docker, webpack, yarnpkg

NodeJS budova webového balíka v kontajneru docker - node.js, caching, docker, webpack, yarnpkg

Čítal som o tom dlhodobé ukladanie do pamäte cache a pokúsil som sa to implementovať v mojom projekte, ale súbor manifestu vytvára nesprávne prepojenia na aktíva, keď sa ho snažím postaviť v dokovacej nádobe, ale generačný proces funguje dobre.

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

Každý, kto vie, čo to môže byť, prečo je konštrukcia kontajnera dokovacej stanice iná?

Pokúsil som sa odstrániť všetky obrázky, vypnúť ukladanie do vyrovnávacej pamäte zásobníka, odstrániť dist adresár pred generáciou - nie funguje.

odpovede:

0 pre odpoveď č. 1

Zistil som, že problém bol predstavený mojím stavebným skriptom, ktorý používa docker-compose.

Docker-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:

Tam som použil zdieľaný zväzok assets a ja som to nezbavil, keď začal docker - znova napíš.

Tento príkaz používam na vytvorenie:
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,
kde som pripravoval tar.gz so zdrojmi, nastavil premenné prostredia a potom použil docker-compose.yml stavať svoj projekt. Ale tam som zabudol odstrániť objem, ktorý bol vytvorený pred ...

Takže riešením bude mať tento príkaz namiesto toho:
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,

môžete to vidieť pridal som docker-compose down -v zastaviť kontajnery a odstrániť objem, ktorý bol vytvorený predtým.