Остановите использование команд docker run — используйте Docker Compose вместо этого
Большинство команд docker run превращаются в неприемлемый набор флагов. В этом руководстве показано, как преобразовать команду docker run в docker compose — с таблицей флагов, примером реального преобразования и бесплатным инструментом для преобразования.
Каждый workflow Docker начинается тем же способом: docker runОдин флаг, два флага — управляемо. Но к тому времени, когда вы запускаете контейнер с портами, переменными среды, томами, политикой перезапуска и кастомной сетью, команда достигает 400 символов, что никто не может запомнить, не может использовать систему контроля версий и не может передать коллеге без Slack-сообщения, полного стыда.
Docker Compose — это решение. Один файл YAML заменяет всю команду — и вы коммитите его в git.
Почему docker run не масштабируется
Вот типичный docker run команды для приложения на Node.js:
docker run -d \
--name my-app \
-p 3000:3000 \
-e NODE_ENV=production \
-e DATABASE_URL=postgres://user:pass@db:5432/mydb \
-v ./data:/app/data \
--network app-network \
--restart always \
my-app:latest
Это работает. Только один раз. Затем вы закрываете терминал, открываете новый через три недели и не знаете, какие флаги вы использовали. Нет ничего git diff. Нет ничего, чтобы поделиться с новым сотрудником. Нет способа проверить, что стейджинг совпадает с продакшном.
Что даёт Docker Compose
Docker Compose берёт всё, что было помещено в эту docker run команду, и помещает в YAML-файл, называемый docker-compose.yml. Этот файл:
- Расположен в вашем репозитории рядом с кодом
- Запускается с одним
docker compose up -d - Запускается одинаково на каждой машине и в каждом окружении
- Масштабируется до многомодульных конфигураций (приложение + база данных + кэш) без сложных флагов
Как преобразовать команду docker run
Та же команда, приведённая выше, становится такой docker-compose.yml:
version: "3.9"
services:
my-app:
image: my-app:latest
container_name: my-app
ports:
- "3000:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgres://user:pass@db:5432/mydb
volumes:
- ./data:/app/data
networks:
- app-network
restart: always
networks:
app-network:
То же поведение. Но теперь она читаема, коммитируется и воспроизводима.
Запустить:
docker compose up -d
Остановить:
docker compose down
Флаги docker run в ключи docker-compose.yml
Справочник по флагам, которые вы чаще всего используете:
| флаг docker run | ключ в docker-compose.yml | Пример |
|---|---|---|
-p 8080:80 | ports: | - "8080:80" |
-e FOO=bar | environment: | FOO: bar |
-v ./data:/data | volumes: | - ./data:/data |
--network mynet | networks: | mynet |
--restart always | restart: | always |
--name mycontainer | container_name: | mycontainer |
--memory 512m | mem_limit: | 512m |
--cpus 1.5 | deploy.resources.limits.cpus | cpus: "1.5" |
-d | Используйте -d флаг на этапе запуска | docker compose up -d |
Автоматическое преобразование
Если у вас есть длинная существующая docker run команда — особенно если она наследуется из README или из скрипта CI, который никто не менял уже два года — вам не нужно вручную преобразовывать каждый флаг. Используйте Конвертер команды docker run в docker-compose: вставьте команду, получите корректный docker-compose.yml результат.
Он обрабатывает порты, переменные среды, тома, сети, политики перезапуска и другие. Полезен для миграции устаревших одноразовых команд без введения опечаток при переводе.
Если вы настраиваете лимиты ресурсов в вашем файле Compose, то Калькулятор ресурсов контейнера Docker помогает выбрать разумные значения памяти и CPU на основе вашего рабочего процесса — до того, как вы коммитите цифры, которые вы просто случайно взяли из воздуха.
Проверьте Dockerfile, пока работаете
Как только ваш файл Compose будет организован, проверьте Dockerfile, из которого он собирается. Неподдерживаемые базовые образы, отсутствующие WORKDIR, избыточные RUN уровни — эти ошибки легко упустить и трудно отладить позже. Инструмент проверки Dockerfile обнаруживает их до того, как они станут проблемами в продакшене.
Вам также может понравиться
Установите наши расширения
Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска
恵 Табло результатов прибыло!
Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!
Подписаться на новости
все Новые поступления
всеОбновлять: Наш последний инструмент было добавлено 22 апр 2026
