Хорошо, давайте перейдем к более продвинутому и детальному подходу. Мы будем углубляться в каждый аспект и давать более сложные задания. Начнем с Docker и перейдем к Kubernetes и CI/CD.

День 1-3: Продвинутая работа с Docker

День 1: Глубокое понимание Docker и создание сложных Dockerfile

Глубокое понимание Docker

  1. Установка Docker:

  2. Основные концепции:

Создание сложных Dockerfile

  1. Создайте сложный 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"]
    
    
  2. Сборка образа:

    docker build -t my-node-app .
    
    
  3. Запуск контейнера с подключением тома:

    docker run -d -p 3000:3000 -v $(pwd)/logs:/app/logs --name my-running-app my-node-app
    
    
  4. Просмотр логов контейнера:

    docker logs my-running-app
    
    
  5. Подключение к работающему контейнеру:

    docker exec -it my-running-app /bin/bash
    
    

День 2: Docker Compose и многоконтейнерные приложения

Продвинутая работа с Docker Compose

  1. Создание 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:
    
    
  2. Запуск приложения:

    docker-compose up --build
    
    
  3. Остановка и удаление контейнеров, сетей и томов:

    docker-compose down -v
    
    
  4. Просмотр логов всех сервисов:

    docker-compose logs -f
    
    
  5. Подключение к базе данных Postgres внутри контейнера:

    docker exec -it <db_container_id> psql -U user -d mydatabase
    
    

День 3: Оптимизация и продвинутая работа с Docker