Приветствую! Есть веб-приложение на ноде + mysql, которое локально разрабатывал в докере (docker-compose с двумя сервисами - mysql и node приложение из DockerFile). Сейчас необходимо развернуть сервис на удаленном сервере (ubuntu), подскажите по нескольким общим (возможно базовым) вопросам
1. Использовать докер в продакшене - нормальное решение?
2. Для первой сборки буду использовать docker-compose build, docker-compose up -d, для обновления кода в контейнере - git pull, docker-compose build, docker-compose up -d. Не упустил ли я какие-то важные команды, которые не используются при разработке, но нужны перед сборкой продакшена?
3. У меня был сервер на 50 гигов, на котором установлен только докер. За месяц пару десятков раз выполнял git pull, docker-compose build, docker-compose up -d, после чего память на сервере закончилась (причем крутится только один docker-compose с двумя сервисами - из docker file и mysql) -.- Докер собирается через docker-file
docker fileFROM node:18-alpine as builder
WORKDIR /usr/src/app
COPY package*.json ./
COPY yarn.lock ./
COPY tsconfig*.json ./
COPY .yarnrc ./
COPY ./src ./src
RUN yarn
RUN yarn build
# Production stage
FROM node:18-alpine
WORKDIR /usr/src/app
ENV NODE_ENV=production
COPY package*.json ./
COPY yarn.lock ./
COPY .env ./
COPY --from=builder /usr/src/app/dist ./dist
RUN yarn
CMD ["yarn", "start"]
Из-за чего могла закончиться память? Это точно не данные контейнеров, там почти пустая бд
4. Автоматический бекап базы данных - ответственность самого сервиса (в коде делать дамп), докера (использовать какой-то image для бекапов) или сервера (непосредственно на сервере настроить крон)?
5. Как не терять данные из бд при перезапусках контейнера? Не знаю как, но пару раз база сама очищалась после манипуляций с контейнером
6. Node.js приложение само пишет нужные мне логи и кладет в корень проекта. Но тк приложение работает в докере, я не могу выполнить nano app.logs для просмотра логов. Это можно как-нибудь решить?