Xanders25 0a39b55c07 | ||
---|---|---|
README.md |
README.md
Шпаргалка по Dockerfile и docker-compose
Эта шпаргалка содержит основные команды и примеры использования Dockerfile и docker-compose. Полезно для быстрой настройки и работы с Docker.
Dockerfile
Основные инструкции Dockerfile:
-
FROM Указывает базовый образ:
FROM <base_image>
Пример:
FROM python:3.10-slim
-
WORKDIR Устанавливает рабочую директорию в контейнере:
WORKDIR /app
-
COPY Копирует файлы из локальной системы в образ:
COPY <source> <destination>
Пример:
COPY . /app
-
RUN Выполняет команды внутри образа при сборке:
RUN <command>
Пример:
RUN apt-get update && apt-get install -y build-essential
-
CMD Определяет команду, выполняемую при запуске контейнера:
CMD ["executable", "arg1", "arg2"]
Пример:
CMD ["python", "app.py"]
-
ENTRYPOINT Устанавливает основную команду для контейнера:
ENTRYPOINT ["executable", "arg1"]
-
EXPOSE Указывает порт, используемый контейнером:
EXPOSE <port>
-
ENV Устанавливает переменные окружения:
ENV <key>=<value>
-
VOLUME Определяет точки монтирования для данных:
VOLUME ["/data"]
-
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:
-
version Указывает версию файла Compose:
version: "3.8"
-
services Определяет сервисы и их параметры:
services: app: image: <image_name>
-
build Указывает путь к Dockerfile для сборки образа:
build: context: .
-
ports Пробрасывает порты контейнера на хост:
ports: - "8000:8000"
-
volumes Монтирует директории или создаёт тома:
volumes: - ./app:/app
-
environment Передаёт переменные окружения:
environment: - KEY=value
-
depends_on Указывает зависимости между сервисами:
depends_on: - db
-
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
Работа с образами:
- Сборка образа:
docker build -t <image_name> .
- Просмотр образов:
docker images
- Удаление образа:
docker rmi <image_id>
Работа с контейнерами:
- Запуск контейнера:
docker run --name <container_name> -p 8000:8000 <image_name>
- Просмотр запущенных контейнеров:
docker ps
- Остановка контейнера:
docker stop <container_id>
- Удаление контейнера:
docker rm <container_id>
Работа с docker-compose:
- Запуск всех сервисов:
docker-compose up
- Остановка всех сервисов:
docker-compose down
- Пересборка образов и перезапуск:
docker-compose up --build
- Перезапуск контейнеров без пересборки:
docker-compose up --force-recreate
- Просмотр логов:
docker-compose logs
Полезные советы:
- Используйте
.env
для хранения конфиденциальных данных. - Всегда сохраняйте данные сервисов через тома (
volumes
). - Для разработки монтируйте код в контейнер с помощью
volumes
, чтобы изменения были видны сразу. - Оптимизируйте Dockerfile, удаляя ненужные слои и файлы после установки зависимостей.