У меня есть проект Node, который использует MongoDB.Для автоматического тестирования мы используем Сервер памяти Mongo
Для сервера памяти Mongo Alpine не поддерживается моим Mongo, поэтому он не может работать на изображениях Alpine
ОтДокументы:
На данный момент нет официального релиза MongoDB для Alpine Linux.Это означает, что мы не можем извлекать двоичные файлы для Alpine (или любой другой платформы, которая официально не поддерживается MongoDB), но вы можете использовать образ Docker, в который уже встроен mongod, а затем установить переменную MONGOMS_SYSTEM_BINARY так, чтобы она указывала на этот двоичный файл.,Это должно позволить вам использовать mongodb-memory-server в любой системе, на которой вы можете установить mongod.
Я могу запустить все свои тесты в контейнере Docker, используя базовый образ Node, но для производстваЯ хочу использовать изображение Alpine для экономии памяти.
, поэтому мой Dockerfile выглядит примерно так.
FROM node:x.x.x as test
WORKDIR /app
COPY . /app
npm install
npm run build # we use Typescript, this runs the transpilation
npm test # runs our automated tests
FROM node:x.x.x-alpine
WORKDIR /app
COPY --from=test /app/src /app/src
COPY --from=test /app/package.json /app/package.json
COPY --from=test /app/package-lock.json /app/package-lock.json
COPY --from=test /app/config /app/config
COPY --from=test /app/scripts /app/scripts
RUN npm install --production
RUN npm run build
При тестировании дыма полученное изображение Alpine, похоже, работает нормально.Я предполагаю, что это безопасно, потому что я устанавливаю модули в самом альпийском образе.
Мне интересно, это лучший метод?Есть ли лучший способ сделать что-то подобное?То есть, в частности, для Node безопасно иметь большой тестовый контейнер и маленький производственный контейнер.