TGViewer
{ Снежные строки } { Снежные строки } @snowlines · 89 subscribers
Post #85 218
❄️ Я наконец-то пощупала Docker!
Разрабатываем с друзьями приложение, которое близится к завершению (надеюсь).
Перед деплоем на каком-то удалённом сервере возник вопрос — как это всё организовать по-умному?
Захотела сделать всё с помощью докера. Бэкенд написан на Nest.js, база данных MongoDB.

Оказалось, не всё так сложно, как я думала изначально

🐳 Что я сделала:

➖Создала в корневой папке проекта Dockerfile - он описывает, как собрать образ нашего приложения.

#############
# The Build Stage
#############
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json .
RUN npm install
COPY . .
RUN npm run build

#############
# The Production Stage
#############
FROM node:20-alpine AS prod
WORKDIR /app
COPY package*.json .
RUN npm install --only=production
COPY --from=build /app/dist ./dist
ENV PORT=3000
EXPOSE ${PORT}
CMD ["npm", "run", "start:prod"]


➖ Также создала docker-compose.yml - он управляет несколькими контейнерами.

version: '3.8'

services:
backend:
build: .
container_name: nest_backend
ports:
- "3000:3000"
depends_on:
- mongodb
environment:
- MONGO_URI=<your-mongo-uri>
- SECRET_ACCESS=<your-access-secret>
- SECRET_REFRESH=<your-refresh-secret>
restart: unless-stopped

mongodb:
image: mongo:6
container_name: mongo_db
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
restart: unless-stopped

volumes:
mongo_data:

📌 Чувствительные переменные лучше хранить в .env. Здесь — просто заглушки для примера.

Сборка и запуск контейнера
docker-compose up --build -d


Локально все работает!
Осталось теперь организовать это все на удаленном сервере.
Изначально была идея воспользоваться бесплатным сервисами, например Railway, но там не вышло. Были ошибки с базой данных 😢
Возможно разберусь с ними, либо буду смотреть на другие варианты

Как будут результаты, расскажу более подробнее!
  • 👨‍💻 8
  • 👍 1
More from @snowlines
  1. Jul 8, 2025Post #94
  2. Jul 3, 2025❄️ Вернулась с отпуска, сейчас нужно заново научиться работать
  3. Jun 9, 2025❄️ Хочу начать серию постов про Redux Redux - state manager, которым я пользуюсь, как в ли…
  4. Jun 5, 2025Post #91
  5. Jun 5, 2025#Задачи
  6. May 24, 2025❄️ Функция высшего порядка Тема, которую можно встретить на собеседованиях очень часто. Да…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →