| 
				
					
						 | 
			||
|---|---|---|
| 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, удаляя ненужные слои и файлы после установки зависимостей.