Порядок слоёв
FROM pinned-image
WORKDIR /work
COPY package*.json ./
RUN npm ci
COPY . .
USER nonroot
CMD ["npm", "test"]Build
- Минимальный context.
.dockerignoreдля git, env, reports.- Secrets через BuildKit mount.
- Повторный build проверяет cache.
- Image inspect/history без secrets.
Playwright contract
- Package version = image version.
- Image содержит browsers/deps, package ставит проект.
--initдля child processes.--ipc=hostдля Chromium.- Reports/traces вынести mount.
Container-only failure
- Versions и browser path.
- Memory/CPU/shared memory.
- PID 1 и signals.
- Network namespace/URL.
- User, UID/GID и mounts.
Ключевое различие
RUN создаёт результат во время image build. Exec-form CMD задаёт основной process нового container при runtime.