mirror of
https://github.com/goldbergyoni/nodebestpractices.git
synced 2025-10-30 09:05:43 +08:00
87 lines
2.3 KiB
Markdown
87 lines
2.3 KiB
Markdown
# Edukiontzia abiarazi node komandoa erabiliz, sahiestu npm
|
|
|
|
## Azalpen paragrafoa
|
|
|
|
Aplikazioen hastea `CMD 'npm start'` erabiltzen duten kode adibideak ikusten ohituak gaude. Hau desegokia da.
|
|
`npm` binarioak ez ditu itzaltze dotorea galaraziko duen seinaleak zure aplikaziora bueltatuko (begiratu [/sections/docker/graceful-shutdown.md]). Azpi prozesuak erabiltzen ari bazara, hauek ez dira behar bezala garbituak izango ustekabeko itzaltze bat gertatzen bada, prozesu zonbiak utziaz. `npm start`ek ere onuragarria ez den prozesu estra bat du. Zure aplikazioa abiarazteko erabili `CMD ['node','server.js']`. Zure aplikazioak azpi prozesuak baditu erabili gainera `TINI` helmuga gisa.
|
|
|
|
### Kodearen adibidea: Abiarazi Node erabilita
|
|
|
|
```dockerfile
|
|
|
|
FROM node:12-slim AS build
|
|
|
|
|
|
WORKDIR /usr/src/app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --production && npm clean cache --force
|
|
|
|
CMD ["node", "server.js"]
|
|
```
|
|
|
|
### Kodearen adibidea: Erabili Tiny helmuga gisa
|
|
|
|
```dockerfile
|
|
|
|
FROM node:12-slim AS build
|
|
|
|
# Gehitu Tini azpi prozesuak erabiliz gero
|
|
ENV TINI_VERSION v0.19.0
|
|
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
|
|
RUN chmod +x /tini
|
|
|
|
WORKDIR /usr/src/app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --production && npm clean cache --force
|
|
|
|
ENTRYPOINT ["/tini", "--"]
|
|
|
|
CMD ["node", "server.js"]
|
|
```
|
|
|
|
### Anti ereduak
|
|
|
|
npm start erabilita
|
|
|
|
```dockerfile
|
|
|
|
FROM node:12-slim AS build
|
|
WORKDIR /usr/src/app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --production && npm clean cache --force
|
|
|
|
# ez egin hau!
|
|
CMD "npm start"
|
|
```
|
|
|
|
Node erabilita string bakarrean bash/ash shell prozesu bat abiatuko du zure komandoa exekutatzeko. Hau ia `npm` erabiltzea moduan da
|
|
|
|
```dockerfile
|
|
|
|
FROM node:12-slim AS build
|
|
WORKDIR /usr/src/app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --production && npm clean cache --force
|
|
|
|
# ez egin hau, bash abiatuko du eta
|
|
CMD "node server.js"
|
|
```
|
|
|
|
npmrekin abiatuz, hau da prozesuaren zuhaitza:
|
|
|
|
```
|
|
$ ps falx
|
|
UID PID PPID COMMAND
|
|
0 1 0 npm
|
|
0 16 1 sh -c node server.js
|
|
0 17 16 \_ node server.js
|
|
```
|
|
|
|
Bi prozesu estra hauek edukitzeak ez du inongo abantailarik ekartzen
|
|
|
|
Iturriak:
|
|
|
|
https://maximorlov.com/process-signals-inside-docker-containers/
|
|
|
|
https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#handling-kernel-signals
|