Хорошо, давайте перейдем к более продвинутому и детальному подходу. Мы будем углубляться в каждый аспект и давать более сложные задания. Начнем с Docker и перейдем к Kubernetes и CI/CD.
Установка Docker:
Убедитесь, что у вас установлена последняя версия Docker.
Проверка версии:
docker --version
Основные концепции:
Создайте сложный Dockerfile для Node.js приложения:
# Используем базовый образ Node.js
FROM node:14
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем package.json и package-lock.json
COPY package*.json ./
# Устанавливаем зависимости
RUN npm install
# Копируем исходный код
COPY . .
# Собираем приложение для продакшена
RUN npm run build
# Указываем переменные окружения
ENV NODE_ENV=production
# Открываем порт для доступа
EXPOSE 3000
# Команда для запуска приложения
CMD ["node", "dist/index.js"]
Сборка образа:
docker build -t my-node-app .
Запуск контейнера с подключением тома:
docker run -d -p 3000:3000 -v $(pwd)/logs:/app/logs --name my-running-app my-node-app
Просмотр логов контейнера:
docker logs my-running-app
Подключение к работающему контейнеру:
docker exec -it my-running-app /bin/bash
Создание Docker Compose файла:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
environment:
NODE_ENV: development
db:
image: postgres
restart: always
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
Запуск приложения:
docker-compose up --build
Остановка и удаление контейнеров, сетей и томов:
docker-compose down -v
Просмотр логов всех сервисов:
docker-compose logs -f
Подключение к базе данных Postgres внутри контейнера:
docker exec -it <db_container_id> psql -U user -d mydatabase