Go to file
Xanders25 0a39b55c07 Добавить README.md 2024-12-24 23:33:39 +02:00
README.md Добавить README.md 2024-12-24 23:33:39 +02:00

README.md

Шпаргалка по Dockerfile и docker-compose

Эта шпаргалка содержит основные команды и примеры использования Dockerfile и docker-compose. Полезно для быстрой настройки и работы с Docker.


Dockerfile

Основные инструкции Dockerfile:

  1. FROM Указывает базовый образ:

    FROM <base_image>
    

    Пример:

    FROM python:3.10-slim
    
  2. WORKDIR Устанавливает рабочую директорию в контейнере:

    WORKDIR /app
    
  3. COPY Копирует файлы из локальной системы в образ:

    COPY <source> <destination>
    

    Пример:

    COPY . /app
    
  4. RUN Выполняет команды внутри образа при сборке:

    RUN <command>
    

    Пример:

    RUN apt-get update && apt-get install -y build-essential
    
  5. CMD Определяет команду, выполняемую при запуске контейнера:

    CMD ["executable", "arg1", "arg2"]
    

    Пример:

    CMD ["python", "app.py"]
    
  6. ENTRYPOINT Устанавливает основную команду для контейнера:

    ENTRYPOINT ["executable", "arg1"]
    
  7. EXPOSE Указывает порт, используемый контейнером:

    EXPOSE <port>
    
  8. ENV Устанавливает переменные окружения:

    ENV <key>=<value>
    
  9. VOLUME Определяет точки монтирования для данных:

    VOLUME ["/data"]
    
  10. LABEL Добавляет метаданные к образу:

    LABEL maintainer="your_email@example.com"
    

Пример Dockerfile:

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

docker-compose.yml

Основные элементы docker-compose:

  1. version Указывает версию файла Compose:

    version: "3.8"
    
  2. services Определяет сервисы и их параметры:

    services:
      app:
        image: <image_name>
    
  3. build Указывает путь к Dockerfile для сборки образа:

    build:
      context: .
    
  4. ports Пробрасывает порты контейнера на хост:

    ports:
      - "8000:8000"
    
  5. volumes Монтирует директории или создаёт тома:

    volumes:
      - ./app:/app
    
  6. environment Передаёт переменные окружения:

    environment:
      - KEY=value
    
  7. depends_on Указывает зависимости между сервисами:

    depends_on:
      - db
    
  8. networks Настраивает сети:

    networks:
      - my_network
    

Пример docker-compose.yml:

version: "3.8"
services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    environment:
      - DATABASE_URL=postgres://postgres:password@db:5432/postgres
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: postgres
    volumes:
      - db_data:/var/lib/postgresql/data
volumes:
  db_data:

Полезные команды Docker

Работа с образами:

  1. Сборка образа:
    docker build -t <image_name> .
    
  2. Просмотр образов:
    docker images
    
  3. Удаление образа:
    docker rmi <image_id>
    

Работа с контейнерами:

  1. Запуск контейнера:
    docker run --name <container_name> -p 8000:8000 <image_name>
    
  2. Просмотр запущенных контейнеров:
    docker ps
    
  3. Остановка контейнера:
    docker stop <container_id>
    
  4. Удаление контейнера:
    docker rm <container_id>
    

Работа с docker-compose:

  1. Запуск всех сервисов:
    docker-compose up
    
  2. Остановка всех сервисов:
    docker-compose down
    
  3. Пересборка образов и перезапуск:
    docker-compose up --build
    
  4. Перезапуск контейнеров без пересборки:
    docker-compose up --force-recreate
    
  5. Просмотр логов:
    docker-compose logs
    

Полезные советы:

  1. Используйте .env для хранения конфиденциальных данных.
  2. Всегда сохраняйте данные сервисов через тома (volumes).
  3. Для разработки монтируйте код в контейнер с помощью volumes, чтобы изменения были видны сразу.
  4. Оптимизируйте Dockerfile, удаляя ненужные слои и файлы после установки зависимостей.