remove default env values. correct package json with env vars . #6

Merged
APervov merged 3 commits from edge5modbus into main 2026-06-19 08:18:08 +00:00
Contributor
No description provided.
APervov added 1 commit 2026-06-19 06:51:45 +00:00
NBizyaev reviewed 2026-06-19 06:58:47 +00:00
app/Dockerfile Outdated
@@ -11,3 +11,3 @@
COPY src ./src
CMD ["npm", "run", "dev"]
CMD ["npm", "run", "start"]
Owner

CMD ["npm", "run", "start"] - это антипаттерн для prod.
npm запускает node как дочерний процесс (например, SIGTERM от Docker при docker stop до node не доходит — контейнер висит 10 секунд до SIGKILL)

prod надо запускать так:

CMD ["node", "dist/index.js"] 

Скрипт

npm start  

используется во время разработки, чтоб проверить билд после npm build

CMD ["npm", "run", "start"] - это антипаттерн для prod. npm запускает node как дочерний процесс (например, SIGTERM от Docker при docker stop до node не доходит — контейнер висит 10 секунд до SIGKILL) prod надо запускать так: ``` CMD ["node", "dist/index.js"] ``` Скрипт ``` npm start ``` используется во время разработки, чтоб проверить билд после `npm build`
NBizyaev marked this conversation as resolved
APervov added 1 commit 2026-06-19 07:30:21 +00:00
NBizyaev reviewed 2026-06-19 07:36:47 +00:00
app/package.json Outdated
@@ -4,3 +4,3 @@
"type": "module",
"scripts": {
"dev": "tsx watch --env-file=.env src/index.ts",
"dev": "tsx watch src/index.ts",
Owner

мы зациклились
"dev": "tsx watch --env-file=.env src/index.ts", - это корректная строчка
потому что это запуск проекта разработчиком
на его, разработчика, компьютере
и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске проекта у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде.

мы зациклились "dev": "tsx watch --env-file=.env src/index.ts", - это корректная строчка потому что это запуск проекта разработчиком на его, разработчика, компьютере и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске проекта у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде.
NBizyaev marked this conversation as resolved
NBizyaev reviewed 2026-06-19 07:39:50 +00:00
app/package.json Outdated
@@ -7,2 +6,3 @@
"dev": "tsx watch src/index.ts",
"build": "tsc",
"start": "node --env-file=.env dist/index.js"
"start": "node dist/index.js"
Owner

мы зациклились
"node --env-file=.env dist/index.js" - это корректная строчка
потому что это запуск билда разработчиком
на его, разработчика, компьютере
и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске билда у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде.

Для запуска билда в продакшне мы будем использовать
CMD ["node", "dist/index.js"]
без указания конкретного .env
так как там в продакшн окружении будут указаны свои собственные значения переменных продакшн окружения.

мы зациклились "node --env-file=.env dist/index.js" - это корректная строчка потому что это запуск билда разработчиком на его, разработчика, компьютере и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске билда у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде. Для запуска билда в продакшне мы будем использовать CMD ["node", "dist/index.js"] без указания конкретного .env так как там в продакшн окружении будут указаны свои собственные значения переменных продакшн окружения.
NBizyaev marked this conversation as resolved
NBizyaev reviewed 2026-06-19 07:44:36 +00:00
@@ -6,4 +7,4 @@
RUN npm ci
COPY tsconfig.json ./
COPY public ./public
Owner

в проекте нет папки public

(обычно, такую или подобную папку (assets) создают в проекте тогда,
когда нужно использовать какие-то файлы, которые лежат прямо в проекте,
например, файлы маппингов можно было бы вынести в общую папку mappings
и копировать её в контейнер, чтобы быть уверенным, что когда приложению понадобится читать файл маппинга,
то он будет найдет в общей папке mappings. Рекомендую. )

в проекте нет папки public (обычно, такую или подобную папку (assets) создают в проекте тогда, когда нужно использовать какие-то файлы, которые лежат прямо в проекте, например, файлы маппингов можно было бы вынести в общую папку mappings и копировать её в контейнер, чтобы быть уверенным, что когда приложению понадобится читать файл маппинга, то он будет найдет в общей папке mappings. Рекомендую. )
NBizyaev marked this conversation as resolved
NBizyaev reviewed 2026-06-19 07:48:11 +00:00
@@ -24,4 +16,0 @@
if (
Array.isArray(value) &&
value.length === REGISTER_COUNT &&
Owner

Мы зациклились.
Я просил убрать бессмысленные перехваты try .. catch
но не саму валидацию вообще как понятие
просто в случае возникновения исключения, оно и так возникнет и мы узнаем, что возникло исключения
НО
валидацию на то, что в массиве действительно 125 элементов убирать не надо.
вдруг там придёт не 125 элементов - это проблема - и вот тут мы не узнаем, что возникло исключение.

Мы зациклились. Я просил убрать бессмысленные перехваты try .. catch но не саму валидацию вообще как понятие просто в случае возникновения исключения, оно и так возникнет и мы узнаем, что возникло исключения НО валидацию на то, что в массиве действительно 125 элементов убирать не надо. вдруг там придёт не 125 элементов - это проблема - и вот тут мы не узнаем, что возникло исключение.
NBizyaev marked this conversation as resolved
APervov added 1 commit 2026-06-19 08:11:14 +00:00
APervov merged commit 34f24824e7 into main 2026-06-19 08:18:08 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NBizyaev/mqtt-ingest#6